ASP.NetWeb.Config转换命名问题
ASP.Net Web.Config transform naming issues
我有一个使用 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>
根据设计,web.config
应包含所有 base/default/debug 值。然后,您 "overrride" 进行转换(基于环境、配置或您选择的任何标准)。我认为没有任何设置可以让您说使用 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)" />
我有一个使用 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>
根据设计,web.config
应包含所有 base/default/debug 值。然后,您 "overrride" 进行转换(基于环境、配置或您选择的任何标准)。我认为没有任何设置可以让您说使用 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)" />