我有一个利用web.config转换的ASP.Net项目。为了促进这一点,我建立了一个类似的结构:
web.base.config
web.debug.config
web.QA.config
web.release.config
web.config
web.base.config
包含web.config数据的未转换基础,而web.[ENVIRONMENT].config
包含基于当前构建配置的转换数据。 web.config
包含在运行时加载的转换结果。
这对我们来说非常有效,并且非常适合进行更改。
然而,到目前为止我手动解决了一个小问题:当我更新我的NuGet依赖关系时,他们将他们的转换应用到web.config
文件,然后在构建时被吹走与我的其他配置的转换。
我已经研究了几种不同的方法来解决这个问题,我没有运气......有什么想法吗?
为了记录,这是我实现上述web.config架构(在项目文件中)的方式:
<ItemGroup>
<None Include="Web.base.config">
</None>
<None Include="Web.base.Local.config">
<DependentUpon>Web.base.config</DependentUpon>
</None>
<None Include="Web.base.Debug.config">
<DependentUpon>Web.base.config</DependentUpon>
</None>
<None Include="Web.base.Release.config">
<DependentUpon>Web.base.config</DependentUpon>
</None>
<None Include="Web.base.QA.config">
<DependentUpon>Web.base.config</DependentUpon>
</None>
<Content Include="Web.config">
<DependentUpon>Web.base.config</DependentUpon>
</Content>
</ItemGroup>
<Target Name="BeforeBuild">
<Exec Command="attrib -r Web.config" />
<TransformXml Source="web.base.config" Transform="web.base.$(Configuration).config" Destination="web.config" StackTrace="true" />
</Target>
答案 0 :(得分:2)
按照设计,web.config
应包含所有基本/默认/调试值。然后你&#34;覆盖&#34;具有变换的那些(基于环境,配置或您选择的任何标准)。我不认为有任何设置允许您说使用web.base.config
代替web.config
。你最好的选择是遵循惯例。
E.g。 的的web.config 强>
<add key="IsDebug" value="true" />
<强> web.release.config 强>
<add key="IsDebug" value="false" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />