在Visual Studio中更改发布时的连接字符串

时间:2012-05-23 12:02:05

标签: c# visual-studio-2010

我有一个asp.net应用程序。我有两个数据库设置,一个测试和生产。在我推送任何更新之前立即写入我手动更改我的conn字符串以指向生产。有没有办法在我发布我的应用程序时自动更改为生产?谢谢你的帮助。

2 个答案:

答案 0 :(得分:5)

您可以使用web.config transformations

答案 1 :(得分:0)

是的web.config转换或者我认为更好的方法是将您的配置与web / app.config分开,因此为每个构建配置设置一个文件夹,例如

配置/调试/ connectionStrings.config

配置/阶段/ connectionStrings.config

配置/生产/ connectionStrings.config

然后你的app或web.config看起来像

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

要将特定于环境的配置添加到bin目录,请创建一个post build事件,该事件根据当前构建配置复制配置或手动将其复制到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