ASP.网网络.配置转换命名问题
本文关键字:问题 转换 配置 网络 ASP | 更新日期: 2023-09-27 18:01:19
我有一个ASP。Net项目,它利用了web。配置转换。为了方便起见,我建立了这样一个结构:
web.base.config
web.debug.config
web.QA.config
web.release.config
web.config
web.base.config
包含未转换的web基。配置数据,而web.[ENVIRONMENT].config
包含基于当前构建配置的转换数据。web.config
包含在运行时加载的转换结果。
这对我们来说工作得很好,并且对于分期更改非常好。
然而,有一个小问题,我到目前为止一直在手动工作:当我更新我的NuGet依赖关系时,他们将转换应用到web.config
文件,在构建时,从我的其他配置转换被吹走。
我已经研究了几种不同的方法来解决这个问题,我没有任何运气…什么好主意吗?
为了记录,这就是我如何实现上述web。配置模式(在项目文件中):
<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>
根据设计,web.config
应该包含所有基本/默认/调试值。然后,您可以使用转换(基于环境、配置或您选择的任何标准)"覆盖"这些转换。我不认为有任何设置可以让你说使用web.base.config
而不是web.config
。你最好遵循惯例。
。 web . config
<add key="IsDebug" value="true" />
web.release.config
<add key="IsDebug" value="false" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />