2012-05-23 37 views
1

我有一個asp.net應用程序。我有兩個數據庫設置,測試和生產。在我推送任何更新之前立即寫入我手動更改我的連接字符串以指向生產。當我發佈我的應用程序時,是否有辦法做到這一點,自動更改爲生產?謝謝你的幫助。在Visual Studio中更改連接字符串發佈公告

回答

0

呀web.config文件轉換或我認爲更好的辦法是你的configs從Web/App.config中分離出來,因此具有例如

每個構建配置文件夾

配置/調試/ connectionStrings.config

配置/舞臺/ connectionStrings.config

配置/生產/ connectionStrings.config

然後您的應用程序或web.config文件看起來像

<connectionStrings configSource="bin\connectionStrings.config" /> 

要獲取環境特定的配置到您的bin目錄,請創建一個後期構建事件,該事件會根據當前構建配置複製配置或手動將它們複製到您的bin。通過這種方式,您不必在生成中繼來獲得所需的配置。

如果你真的想這個自動的後生成事件可能看起來像

"$(SolutionDir)CopyConfigs.bat" "$(ProjectDir)" "$(ConfigurationName)" "$(OutDir).." 

和批處理文件,以便複製可以在項目之間重複使用:

@echo CopyConfigs.bat : 
@echo Coping Config Files... 

set projectDir=%1 
set configurationName=%2 
set outDir=%3 

REM Trim Quotes  
for /f "useback tokens=*" %%a in ('%1') do set projectDir=%%~a  
for /f "useback tokens=*" %%a in ('%2') do set configurationName=%%~a  
for /f "useback tokens=*" %%a in ('%3') do set str3=%%~a  
@echo Project Directory: %1  
@echo ConfigurationName: %2  
@echo OutDir: %3  
if not exist %1 goto ProjectDirectoryNotFound  
REM Copy the configuration files to the projects output directory  
xcopy /Y "%projectDir%Configuration\%configurationName%\*.config" "%outDir%"  
xcopy /Y "%projectDir%Configuration\*.config" "%outDir%"  
@goto END  
:ProjectDirectoryNotFound  
@echo Project Directory %projectDir% was not found.  
@goto END  
:END  
@echo Coping Config Done