【发布时间】:2020-01-29 21:44:16
【问题描述】:
我添加了 Cheeatah 来简化我的配置管理。
我可以在预览中看到更改。但是当我在构建时查看配置时,我看不到它正在转换我的配置文件。我已选择配置并单击构建。我错过了什么
【问题讨论】:
标签: visual-studio visual-studio-2010 visual-studio-2012 slowcheetah
我添加了 Cheeatah 来简化我的配置管理。
我可以在预览中看到更改。但是当我在构建时查看配置时,我看不到它正在转换我的配置文件。我已选择配置并单击构建。我错过了什么
【问题讨论】:
标签: visual-studio visual-studio-2010 visual-studio-2012 slowcheetah
确保项目文件中的配置文件引用为TransformOnBuild节点,值为True,如下示例:
<None Include="App.config">
<TransformOnBuild>True</TransformOnBuild>
</None>
【讨论】:
与 Kieron 的回答不同,在我的情况下,<TransformOnBuild> 仅为设计师设置。只需删除该条件:
<None Include="App.config">
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
</None>
【讨论】:
出现同样错误的另一种情况:
<Content Include="Castle.Config.Xml">
<TransformOnBuild>true</TransformOnBuild>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
问题:TransformOnBuild 与 CopyToOutputDirectory!
“TransformOnBuild”是一个隐含的“CopyToOutputDirectory”。如果您同时定义两者,则首先完成转换,然后“复制”覆盖您转换后的文件。
我们项目中发生的这种情况是由于开发人员不小心设置了复制标签。看来,顺序并非在所有情况下都相同。删除 CopyToOutputDirectory 解决了这个问题。
此版本按预期工作:
<Content Include="Castle.Config.Xml">
<TransformOnBuild>true</TransformOnBuild>
</Content>
【讨论】: