1

我做 MVC 应用程序,我只有在开发时才想执行几行代码,而在部署应用程序时还有另一部分类似的代码。例如,我有将邮件发送到某个地址的控制器操作,但我希望在部署和测试时该地址不同。

总是很难改变它,我经常忘记这样做。

4

2 回答 2

6

Visual Studio 提供了多种方法来执行此操作,您要使用哪种方法取决于您到底想要做什么。

例如,您可以使用构建目标来指定您想要的构建类型,Release 和 Debug 很常见,但您也可以创建其他。然后,您可以在代码中添加#if 预处理器语句,以根据选择的构建来执行操作。

另一种听起来像您想要的方法是在您的应用程序或 web.config 中使用应用程序设置。然后使用构建转换根据构建类型转换配置(例如,您将看到 Web.Debug.config 或 Web.Release.config。当您发布站点时,Visual Studio 会自动将这些转换应用于您的配置文件并将应用程序设置更改为您想要的构建类型。

因此,使用您的示例,您将在 Web.config 中包含以下内容:

<appSettings>
    <add key="notifyAddress" value="debug@foo.com" />
</appSettings>

然后,在你的 Web.Release.config 你有这个转换:

<appSettings>
    <add key="notifyAddress" value="release@foo.com" 
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</appSettings>

在您的代码中,您有:

string emailAddress = ConfigurationManager.AppSettings["notifyAddress"];

现在,当您发布站点时,emailAddress 将自动具有 release@foo.com。

于 2013-06-02T08:57:33.433 回答
1

看看这是否有帮助:https ://stackoverflow.com/a/4597270/1043824 。推荐的方式仍然是配置文件的方式。

在 Visual Studio 2010 中,Request.ServerVariables("SERVER_SOFTWARE") 将为开发服务器返回 Nothing (null),为我的 Win7 Pro IIS/VS2010 安装返回“Microsoft-IIS/7.5”。

于 2013-06-02T09:19:40.160 回答