gpt4 book ai didi

c# - web.config 转换从 web.template.xml 不工作

转载 作者:太空狗 更新时间:2023-10-29 21:40:38 27 4
gpt4 key购买 nike

我正在尝试让 web.config 转换按照描述的方式工作 here .我们已经在其他项目中使用了这种方法,并且没有问题,但在这个新项目中却没有。

这是我尝试过但没有成功的测试

  • 更改 wpp.targets 文件的名称以防我弄错项目名称。我知道我正在使用的当前版本有效,因为它是唯一一个导致从 web.template.xml 重建 web.config 的版本,此转换有效。只有子模板不起作用。
  • 尝试使用 xdt:Locator="Match(name)"
  • 尝试了 .config 扩展名与 .xml,我们的其他项目使用 .xml
  • 配置管理器设置为使用我正在处理的项目的“测试”配置。
  • web.template.Test.xml 有 xdt:Transform="Replace"我想替换的部分
  • web.template.xml 有占位符
  • 尝试按照下面链接的堆栈问题中的建议从 wpp.targets 中删除“CopyWebTemplateConfig”部分。我们的其他项目已将此部分和“PropertyGroup”部分注释掉,我已经尝试了这两种组合。

我已经多次阅读上面的链接和这个相关的堆栈 question ,但看不出是什么问题。

注意 发布转换确实以某种方式起作用。它会创建一个 web.template.xml 文件,其中包含来自 web.template.Test.xml 的值,但不会按照 wpp.targets 的指示创建 web.config.xml。因此,这似乎更像是让构建转换正常工作的问题。

有人知道缺少什么吗?

wpp.targets

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<!-- Make sure web.config will be there even for package/publish -->
<Target Name="CopyWebTemplateConfig" BeforeTargets="Build">
<Copy SourceFiles="web.template.xml"
DestinationFiles="web.config"/>
</Target>

<PropertyGroup>
<PrepareForRunDependsOn>
$(PrepareForRunDependsOn);
UpdateWebConfigBeforeRun;
</PrepareForRunDependsOn>
</PropertyGroup>

<!-- This target will run right before you run your app in Visual Studio -->
<Target Name="UpdateWebConfigBeforeRun">
<Message Text="Configuration: $(Configuration): Web.template.$(Configuration).xml"/>
<TransformXml Source="web.template.xml"
Transform="web.template.$(Configuration).xml"
Destination="web.config" />
</Target>

<!-- Exclude the config template files from the created package -->
<Target Name="ExcludeCustomConfigTransformFiles" BeforeTargets="ExcludeFilesFromPackage">
<ItemGroup>
<ExcludeFromPackageFiles Include="web.template.xml;web.template.*.xml"/>
</ItemGroup>
<Message Text="ExcludeFromPackageFiles: @(ExcludeFromPackageFiles)" Importance="high"/>
</Target>
</Project>

web.template.xml

<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=152368
-->
<configuration>
<configSections>
<sectionGroup name="TestSettings"></sectionGroup>
....
</configSections>
....
<TestSettings>
</TestSettings>
....
</configuration>

web.template.Test.xml

<?xml version="1.0"?>
<!-- For more information on using transformations
see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<TestSettings xdt:Transform="Replace">
...
</TestSettings>
</configuration>

MSBuild 输出

Target "UpdateWebConfigBeforeRun: (TargetId:143)" in file "C:\...\Project.wpp.targets" from project "C:\...\Project.csproj" (target "PrepareForRun" depends on it):
Task "Message" (TaskId:93)
Configuration: Test: Web.template.Test.xml (TaskId:93)
Done executing task "Message". (TaskId:93)
Task "TransformXml" (TaskId:94)
Transforming Source File: Web.template.xml (TaskId:94)
Applying Transform File: Web.template.Test.xml (TaskId:94)
Executing Replace (transform line 5, 18) (TaskId:94)
on /configuration/TestSettings (TaskId:94)
Applying to 'TestSettings' element (source line 121, 4) (TaskId:94)
Replaced 'TestSettings' element (TaskId:94)
Done executing Replace (TaskId:94)
Output File: web.config (TaskId:94)
Transformation succeeded (TaskId:94)
Done executing task "TransformXml". (TaskId:94)
Done building target "UpdateWebConfigBeforeRun" in project "Project.csproj".: (TargetId:143)

最佳答案

我已经安装了 StyleCop,它正在为我覆盖。

所以我卸载了它,问题就解决了。

有趣的是,我重新安装了 StyleCop,转换仍然有效!

另外在某些时候我注意到我也应该删除 CopyWebTemplateConfig 目标部分。

关于c# - web.config 转换从 web.template.xml 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11763841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com