4

我们知道 Visual Studio 有这个很棒的功能可以在发布时转换 Web.config。所以我们可以在 Web.Release.config 中使用类似下面的内容来替换 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 值而不是 Release 值。

所以问题是,当您在 Web.Release.config 中定义转换时,是否有办法指示必须替换给定项目,如果找不到密钥,则抛出和 ERROR 而不是 WARNING并基本上以一些错误代码退出发布?

4

1 回答 1

0

您可以将 Visual Studio 选项设置为“将警告视为错误”,这会引发错误,阻止发布任务完成。您甚至可以将其配置为仅将此特定警告视为错误。

您可以通过转到要部署的项目的属性页面来找到该对话框,然后在底部附近的 Build 下找到您的选项。

于 2013-03-29T15:41:56.170 回答