Web.config和Web.Release.config中的appSettings

8

尝试获取用于开发和生产的简单的<appSettings>

我的Web.config文件:

<appSettings>
  <add key="hello" value="debug" />
</appSettings>

My Web.Release.config:

<appSettings>
  <add key="hello" value="prod" />
</appSettings>

(均在<configuration>下)

当我处于Debug模式,并运行我的MVC网站时,我可以在HomeController.Index中做一个简单的return Content(WebConfigurationManager.AppSettings["hello"]);,它会返回dev。如果我将模式切换到Release,它仍然返回dev。我想模拟生产模式而不实际发布到生产环境。


没有一个好的方法来做这件事,而且有一个非常强烈的论点认为你真的不应该这样做。最终,IIS只会查看一个名为 web.config 的文件,因此您只能使用该文件。当然,您可以预览转换后的文件并将其复制/粘贴进去,但要记得在测试后撤消它。 - DavidG
2个回答

20

在生成特定的Web.config文件中,你需要告诉它如何转换基本的.config文件。所以为了实现你的要求,你的Web.Release.config文件应该像这样:

In the build-specific Web.config file, you have to tell it how to transform the base .config file. So to do what you ask, your Web.Release.config file should look like this:

<appSettings>
  <add key="hello" value="prod" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
在上面的代码中,SetAttributes 转换器将更改匹配包含值为 hellokey 属性的任何元素的属性。

1
只是提醒一下,这不适用于 F5 调试,它只在发布期间起作用。 - Lenard Bartha

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接