MVC构建 - 根据构建配置编辑connectionString文件(VS2012)

时间:2013-04-24 08:45:56

标签: c# asp.net-mvc model-view-controller visual-studio-2012 connection-string

当我将MVC网站部署到我们的测试服务器时,它将连接到不同的数据库,因此需要不同的连接字符串

通常可以使用 Web.config 的转换来更改,但不幸的是我正在使用NopCommerce解决方案,其中connectionstring在文本文件中确定: App_Data / Settings.txt

那么,有没有人对如何根据构建配置改变此Settings.txt文件的一行有任何想法,例如: “Debug”或“TeamCityDebug”?

我考虑过构建事件(见下文),但它们适用于所有构建配置,而不仅仅是“Debug”,例如:

enter image description here

3 个答案:

答案 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等自定义构建配置,但您可以尝试一下......