Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net Web.Config转换命名问题_C#_Asp.net_Web Config_Web Config Transform - Fatal编程技术网

C# 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包含运行时加载的转换结果 这对我们来说真的很

我有一个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
包含运行时加载的转换结果

这对我们来说真的很好,并且对于分段更改非常好

然而,到目前为止,我一直在手动解决一个小问题:当我更新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: