C# settings.settings连接开发与生产中的字符串
我正在使用VisualStudio2008开发winforms应用程序 我的数据库连接字符串存储在settings.settings中 我的开发和生产环境需要不同的数据库登录凭据,现在我正在手动更改connectionstring,然后再为这两个不同的环境进行构建 有更好的解决办法吗?一个永恒的问题!:-) 基本上,现在微软并没有一个好的答案 我要做的是在我的设置文件中有两个连接字符串,在两个不同的名称下,然后在app.config中有一个配置设置,它告诉我使用哪一个:C# settings.settings连接开发与生产中的字符串,c#,visual-studio-2008,C#,Visual Studio 2008,我正在使用VisualStudio2008开发winforms应用程序 我的数据库连接字符串存储在settings.settings中 我的开发和生产环境需要不同的数据库登录凭据,现在我正在手动更改connectionstring,然后再为这两个不同的环境进行构建 有更好的解决办法吗?一个永恒的问题!:-) 基本上,现在微软并没有一个好的答案 我要做的是在我的设置文件中有两个连接字符串,在两个不同的名称下,然后在app.config中有一个配置设置,它告诉我使用哪一个: MyDatabaseDE
MyDatabaseDEV = server=(local);database=mydatabase;-........
MyDatabasePROD = server=ProdServer;database=MyDatabase;........
和app.config中的
<appSettings>
<add key="UseDatabase" value="MyDatabaseDEV" />
</appSettings>
Marc您可以制作表单,要求用户输入连接参数,如服务器名称和数据库…,并将这些参数存储在注册表、文件等中。在我工作的地方,创建一个名为config的文件夹来保存各种配置
source
config
MyProject
environment1
environment2
MyProject2
environment1
environment2
运行构建脚本时,它会根据您为哪个环境进行构建获取正确的配置…您应该向winform应用程序添加app.config文件。在此文件中,将连接字符串存储在ConnectionString部分下
在代码中,创建连接时,使用ConfigurationManager类使用该连接字符串访问配置文件
因此,当您部署应用程序时,您必须在配置文件中设置一次连接字符串,然后一切都按预期运行 您可以在设置中定义连接,在调试模式下使用dev connection,或者使用带有#if指令的生产连接
//affect your prod connection here
#if DEBUG
//re affect your dev connection here;
#endif
一个解释链接:在解决方案资源管理器中的网站上单击鼠标右键,然后选择“添加web部署项目”
无论何时构建此新WDP项目,它都将替换您指定的所有配置元素。根据调试版本或发布版本的不同,您也可以有不同的版本。它适用于几乎所有的配置选项,包括连接字符串。有很多关于如何在网上正确配置它的文档,只需搜索“Web部署项目”
这无疑是一种新的“默认”方式,直到微软决定在将来的.Net/Visual Studio版本中使其更加正式为止(如果有的话)。我已经开始使用一个名为TestMode=“dev | prod | uat”的设置
编译目标的问题是,在构建之后不能更改任何内容
使用这种方法,您可以包含所有所需环境的所有连接字符串和设置。在代码配置提供程序中,可以基于此设置进行切换
使用这种方法,您所要做的就是在部署后更改标志,或者使用像Octopus这样的部署软件为您更改标志
我已经放弃了合并.config文件,这既困难又容易出错。事实上,这是我们过去常做的事情。现在,我们使用我编写的一个应用程序来自动进行部署,并处理这个问题。但一般来说,构建后脚本是一种方法。在您有多个要部署的环境之前,这种方法是有效的……在我的工作中,我们有sit、uat、prod……这些链接似乎都是用于web应用程序的,而不是我正在处理的winforms。目前看来,您的解决方案最简单明了。