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>

ASP.网网络.配置转换命名问题

根据设计,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)" />