1

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

4

2 回答 2

5

您可以为此使用web.config 转换

于 2012-05-23T12:04:10.530 回答
0

是的 web.config 转换,或者我认为更好的方法是将您的配置与您的 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
于 2012-05-23T12:48:42.120 回答