我需要在ASP.NET应用程序中使用不同的数据库连接字符串和SMTP服务器地址,具体取决于它是在开发环境还是生产环境中运行.
应用程序通过WebConfigurationManager.AppSettings属性从Web.config文件中读取设置.
我使用Build/Publish命令通过FTP将应用程序部署到生产服务器,然后用正确的方法手动替换远程Web.config.
有可能以某种方式简化部署过程吗?谢谢!
在Visual Studio 2010及更高版本中,您现在可以根据构建配置将转换应用于web.config.
创建web.config时,您可以在解决方案资源管理器中展开该文件,您将看到两个文件:
Web.Debug.Config
Web.Release.Config
它们包含可用于的转换代码
更改连接字符串
删除调试跟踪和设置
注册错误页面
有关详细信息,请参阅MSDN上的Web应用程序项目部署的Web.config转换语法.
尽管官方不支持,也可以将相同类型的转换应用于非Web应用程序app.config
文件.请参阅Phil Bolduc博客,了解如何修改项目文件以向msbuild添加新任务.
这是对Visual Studio Uservoice的长期保留请求.
Visual Studio 2010及更高版本的扩展," SlowCheetah "可用于处理为任何配置文件创建转换.从Visual Studio 2017.3开始,SlowCheetah已集成到IDE中,代码库由Microsoft管理.这个新版本也支持JSON转换.
web.config中的标记支持一个文件属性,该属性将使用自己的一组键/值加载外部配置.这些将覆盖您在web.config中的任何设置或添加到它们.
我们通过在安装时修改web.config并使用与安装站点的环境相匹配的文件属性来利用此功能.我们通过安装程序开关来完成此操作.
例如;
注意:
对属性指定的.config的更改不会触发重新启动asp.net工作进程
您是否已查看过Web部署项目?
http://www.microsoft.com/downloads/details.aspx?FamilyId=0AA30AE8-C73B-4BDD-BB1B-FE697256C459&displaylang=en
如果您不在2008年,还有VS2005的版本.
我也想知道.这有助于我解决问题
然后我保留一个connectionStrings.config以及一个"{host} connectionStrings.config".这仍然是一个问题,但如果您对两个环境中不同的部分执行此操作,则可以部署和版本化相同的web.config.
(而且我不使用VS,顺便说一句.)
我使用NAnt构建脚本部署到我的不同环境.我根据它们被部署到的位置通过XPath修改我的配置文件,然后使用Beyond Compare自动将它们放入该环境中.
设置一两分钟,但您只需要执行一次.然后批处理文件接管我去另外一杯咖啡.:)
这是我在其上发现的一篇文章.
在一个拥有4个环境(开发,测试,分段和生产)的项目中,我们开发了一个系统,其中应用程序根据部署到的计算机名称选择适当的配置。
这对我们有用,因为:
管理员可以部署应用程序而无需开发人员参与(这是必需的),而不必摆弄配置文件(他们讨厌);
机器名称遵循约定。我们使用正则表达式匹配名称,并将其部署到环境中的多台计算机上;和
我们对连接字符串使用了集成安全性。这意味着我们可以在设计时将帐户名保留在配置文件中,而无需透露任何密码。
在这种情况下,它对我们来说效果很好,但可能不会在所有地方都起作用。