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