0

我创建了一个控制台应用程序,负责从数据库生成数据导出。这必须部署到与数据库运行位置不同的批处理服务器。在 app.config 中,我需要将连接字符串配置到数据库。我有大约八个需要部署此控制台应用程序的环境。到目前为止,我需要存储每个环境的原始配置文件并将其单独复制到安装文件夹中。

我知道的第一件事是将文件添加到 Visual Studio 中的安装项目。在主要输出旁边,我添加了所有带有条件属性的配置文件。我在设置向导(文本框)中添加了一个屏幕,要求安装的用户输入我指定的环境名称。我在其中一个设置项目中成功配置了这个,但在两个项目中我的解决方案不正确。在那些我总是在安装文件夹中得到我的 app.config 文件,而不是我在安装项目中创建的配置文件。当我重命名文件时,只有在设置过程中输入正确的详细信息时才能看到它们。所以我的猜测是我的文件被我项目中的 app.config 覆盖了。

我的设置的构建结果:

Building file 'C:\MyProject\MyProject.Setup\Deploy\MyProject.msi'...
Packaging file 'MyProject.exe.config'...
Packaging file 'MyProject.exe'...
Packaging file 'MyProject.exe.config'...
Packaging file 'MyProject.exe.config'...

有谁知道这里出了什么问题?我需要特殊条件或设置吗?或者可能是另一种部署策略。手动编辑配置文件不是一种选择。我感谢所有帮助。提前致谢。

4

2 回答 2

2

如果仅与连接字符串有关,请添加对您部署到文件夹的第二个配置文件的引用,例如:

<connectionStrings configSource="connectionstrings.config" />

或者单独部署您的完整配置文件,并将其加载到您的应用程序中,例如:

var map = new ExeConfigurationFileMap {ExeConfigFilename = @"C:\MyProject\custom.config"};
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
于 2012-12-15T09:41:33.493 回答
1

只需使用 SlowCheetah 并应用配置转换,请参阅http://www.hanselman.com/blog/SlowCheetahWebconfigTransformationSyntaxNowGeneralizedForAnyXMLConfigurationFile.aspx

于 2012-12-15T10:44:07.613 回答