C# ASP.Net Web.Config转换命名问题
我有一个ASP.Net项目,它利用web.config转换。为了实现这一点,我构建了如下结构:C# ASP.Net Web.Config转换命名问题,c#,asp.net,web-config,web-config-transform,C#,Asp.net,Web Config,Web Config Transform,我有一个ASP.Net项目,它利用web.config转换。为了实现这一点,我构建了如下结构: web.base.config web.debug.config web.QA.config web.release.config web.config web.base.config包含web.config数据的未转换基,而web.[ENVIRONMENT].config包含基于当前生成配置的转换数据。web.config包含运行时加载的转换结果 这对我们来说真的很
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模式的(在项目文件中):
Web.base.config
Web.base.config
Web.base.config
Web.base.config
Web.base.config
根据设计,web.config
应该包含所有基本/默认/调试值。然后,使用转换(基于环境、配置或您选择的任何标准)来“超越”这些转换。我认为没有任何设置允许您使用web.base.config
而不是web.config
。你最好的办法是遵守惯例
例如。
web.config
<add key="IsDebug" value="true" />
<add key="IsDebug" value="false" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
web.release.config
<add key="IsDebug" value="true" />
<add key="IsDebug" value="false" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
您可以添加一些细节吗?据我所知,这应该不是问题。问题是web.base.config应该由nuget更新,而不是web.config。但据我所知,没有办法在项目特定级别上设置(因为这是一个有许多工程师的团队项目)。现在在构建时,一切都很好-但是在nuget更新时,web.config会随着包的更改而更新,然后在下一个构建时被吹走。我目前正在把关所有nuget更改,并在更新时手动将它们复制到web.base.config,但我们希望取消此步骤。啊。。我现在明白了。我想你把它设置得倒过来了。根据设计,web.config
应该包含所有基本/默认/调试值。然后,使用转换(基于环境、配置或您选择的任何标准)来“超越”这些转换。我不认为有任何设置允许您使用web.base.config而不是web.config。你最好的选择是遵循约定。是的-我很想这样做,但问题是web.config必须包含转换结果,而不是未转换的数据…除非你说约定是将web.config的转换应用于web.config,然后应用到web.config?是的。例如web.config:
。web.release.config: