我有一个asp.net应用程序。我有两个数据库设置,一个测试和生产。在我推送任何更新之前立即写入我手动更改我的conn字符串以指向生产。有没有办法在我发布我的应用程序时自动更改为生产?谢谢你的帮助。
答案 0 :(得分:5)
答案 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