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

本文关键字:连接 字符串 Studio Visual 布时更 | 更新日期: 2023-09-27 18:35:16

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

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

你可以为此使用 web.config 转换。

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

Config/Debug/connectionStrings.config

Config/Stage/connectionStrings.config

Config/Production/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