繁体   English   中英

如何在Visual Studio中使用config变换强制替换元素?

[英]How to force replace an element using config transform in Visual Studio?

我们知道Visual Studio有这个很棒的功能来在发布时转换Web.config。 因此,我们可以在Web.Release.config中使用以下内容替换Web.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”项目将不会被替换,因为transform将找不到该键并将以静默方式打印此警告:

...\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并基本上退出发布时出现一些错误代码?

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

您可以通过转到要部署的项目的“属性页”找到对话框,然后在“靠近底部的构建”下找到您的选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM