当我将MVC网站部署到我们的测试服务器时,它将连接到不同的数据库,因此需要不同的连接字符串。
通常可以使用 Web.config 的转换来更改,但不幸的是我正在使用NopCommerce解决方案,其中connectionstring在文本文件中确定: App_Data / Settings.txt
那么,有没有人对如何根据构建配置改变此Settings.txt文件的一行有任何想法,例如: “Debug”或“TeamCityDebug”?
我考虑过构建事件(见下文),但它们适用于所有构建配置,而不仅仅是“Debug”,例如:
答案 0 :(得分:1)
您可以编写控制台应用程序来处理您的Setting.txt 在预构建事件中调用您的控制台应用程序
replace.exe“servera”“serverb”“.... \ Settings.txt” - 例如
在您的控制台应用程序代码中
static void Main(string[] args)
{
FileStream fs = new FileStream(args[3],FileMode.OpenOrCreate);
StreamReader sr = new StreamReader(fs);
StreamWriter sw = new StreamWriter(fs);
string content = sr.ReadToEnd();
content = content.Replace(args[0], args[1]);
fs.Position = 0;
sw.Write(content);
}
答案 1 :(得分:1)
感谢您的建议,但我最终创建了多个"<something>settings.txt"
文件,然后使用简单的构建后事件(命令行操作)将所需的文件复制到正确的目录中,并且所需的名称为"Settings.txt"
。应用程序选择此文件并使用其中的connectionStrings。
我在构建后的事件中添加了以下内容:
if $(ConfigurationName) == TeamCityDebug copy /Y "$(ProjectDir)App_Data\TeamCitySettings.txt"
"$(ProjectDir)App_Data\Settings.txt"
if $(ConfigurationName) == Release copy /Y "$(ProjectDir)App_Data\LocalSettings.txt"
"$(ProjectDir)\App_Data\Settings.txt"
答案 2 :(得分:0)
您可以使用:
#if DEBUG
//Load connection from debug file
#else
//Load connection from release file
#endif
不确定您是否可以使用TeamCityDebug等自定义构建配置,但您可以尝试一下......