2012-12-14 70 views
0

我已經創建了一個控制檯應用程序,負責從數據庫中生成數據導出。必須將其部署到與數據庫運行位置不同的批處理服務器。在app.config中,我需要配置連接字符串到數據庫。我有大約八個環境,我需要部署此控制檯應用程序。現在,我需要爲每個環境存儲原始配置文件,並將其分別複製到安裝文件夾。將.NET 4.0控制檯應用程序部署到不同的環境

我知道的第一件事是將文件添加到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'... 

有誰知道這到底是怎麼失敗的?我需要特殊的條件或設置嗎?或者可能是另一種部署策略。手動編輯配置文件不是一個選項。我感謝所有幫助。提前致謝。

回答

2

如果只有連接字符串,添加到第二個配置文件的引用,其部署到您的文件夾,如:

<connectionStrings configSource="connectionstrings.config" /> 

或者seperately部署完整的配置文件,並在將其加載到應用,如:

var map = new ExeConfigurationFileMap {ExeConfigFilename = @"C:\MyProject\custom.config"}; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 
相關問題