我需要在我的ASP中使用不同的数据库连接字符串和SMTP服务器地址。NET应用程序,这取决于它在开发环境或生产环境中运行的位置。

应用程序从Web读取设置。配置文件通过WebConfigurationManager。AppSettings财产。

我使用Build/Publish命令通过FTP将应用程序部署到生产服务器,然后手动替换远程Web。配置正确。

是否有可能以某种方式简化部署过程?谢谢!


当前回答

在一个有4个环境(开发、测试、登台和生产)的项目中,我们开发了一个系统,其中应用程序根据部署到的机器名称选择适当的配置。

这对我们来说很有效,因为:

管理员可以在不涉及开发人员(需求)的情况下部署应用程序,也不必摆弄配置文件(他们讨厌配置文件); 机器名称遵循约定。我们使用正则表达式匹配名称,并将其部署到一个环境中的多台机器上;而且 我们对连接字符串使用了集成安全性。这意味着我们可以在设计时在配置文件中保留帐户名,而不泄露任何密码。

在这种情况下,它很适合我们,但可能并不适用于任何地方。

其他回答

你也可以使用扩展“配置转换”与“SlowCheetah”一样,

在Visual Studio 2010及以上版本中,您现在可以将转换应用到您的web。根据构建配置进行配置。

在创建网页时。Config,您可以在解决方案资源管理器中展开该文件,您将看到两个文件:

Web.Debug.Config Web.Release.Config

它们包含可用于的转换代码

更改连接字符串 删除调试跟踪和设置 注册错误页面

看到网络上。配置MSDN上Web应用程序项目部署的转换语法以获取更多信息。

虽然官方不支持,但也可以将相同类型的转换应用到非web应用程序app.config文件。请参阅Phil Bolduc的博客,了解如何修改项目文件以向msbuild添加新任务。

这是Visual Studio Uservoice上一个长期存在的请求。

Visual Studio 2010及以上版本的扩展“SlowCheetah”可用于为任何配置文件创建转换。从Visual Studio 2017.3开始,SlowCheetah已经集成到IDE中,代码库由微软管理。这个新版本还支持JSON转换。

你看过网络部署项目吗?

http://www.microsoft.com/downloads/details.aspx?FamilyId=0AA30AE8-C73B-4BDD-BB1B-FE697256C459&displaylang=en

如果你不是2008年的版本,VS2005也有一个版本。

Enterprise Library配置编辑器可以帮助您完成此操作。它允许您创建一个基本配置文件,然后为每个环境创建增量。然后,您可以合并基本配置和增量,以创建特定于环境的web.config。看看这里的信息,它比我更能让你理解它。

这是使用machine.config的巨大好处之一。在我的上一份工作中,我们有开发、测试和生产环境。我们可以用机器。配置连接字符串(到相应的dev/test/prod SQL机器)。

如果您无法访问实际的生产机器(例如,如果您在共享主机上使用托管公司),那么这可能不是一个解决方案。