我们知道Visual Studio在发布时转换Web.config的功能非常棒。因此,我们可以有一些像在Web.Release.config以下取代Web.config中的原始值:如何强制在Visual Studio中使用配置转换替换元素?
Web.config文件:
<add key="SomeKey" value="DebugValue"/>
Web.Release.config:
<add key="SomeKey" value="ReleaseValue" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
只要在转换配置中没有拼写错误,这一切都很好。因此,举例来说,如果你在你的变换配置以下行:
<add key="SomeKeyTypo" value="ReleaseValue" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
然后“SomeKey”项目不会因为更换改造将无法找到钥匙,会悄悄地打印这样的警告:
...\Web.Release.config: Warning : No element in the source document matches '/configuration/appSettings/add[@key='SomeKeyTypo']'
问题是在某些情况下,如果您在主Web.config中更改了密钥,并且您忘记在Web.Release.config中更改它,发布时很可能不会读取发布输出消息,并且您错过了警告,因为Debug值w会导致灾难不适用于您的应用程序,而不是释放值。
所以问题是,当你定义Web.Release.config转换是有办法表明是给定项目必须更换,如果关键是没有找到罚球和错误而不是警告和基本上用一些错误代码退出发布?
这看起来像一个有趣的解决方法,但令人惊讶的是,它似乎不适用于变换警告!我将所有警告设置为具有转换的Web项目的错误,但仍将它们视为黄色警告。它适用于其他类型的警告,比如当你声明一个变量并且不使用它时,它完全忽略了变换警告!任何想法为什么?也许它只适用于编译警告!? – kaptan 2013-04-01 18:40:47
我前几天开始看这个帖子,并认为PostBuild步骤可能是一条可行的路。我今天晚些时候可能会寻找这样的解决方案,然后回顾一下结果。虽然可能不像注意部署输出那样简单.. – 2013-04-05 09:18:23
如果您分享您的发现,那将是非常棒的:> – kaptan 2013-04-05 21:40:34