2

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

通常这可以使用Web.config的转换进行更改,但不幸的是,我使用的是 NopCommerce 解决方案,其中连接字符串在文本文件中确定:App_Data/Settings.txt

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

我考虑过构建事件(见下文),但它们发生在所有构建配置中,而不仅仅是“调试”,例如:

在此处输入图像描述

4

3 回答 3

1

感谢您的建议,但我最终创建了多个"<something>settings.txt"文件,然后使用简单的构建后事件(命令行操作)将所需的文件复制到正确的目录中,并使用所需的"Settings.txt". 应用程序拾取这些文件并使用其中的连接字符串。

我在构建后事件中添加了以下内容:

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"
于 2013-04-24T10:32:51.660 回答
1

You can write a console application to process your Setting.txt invoke your console application in your pre-build event

replace.exe "servera" "serverb" "....\Settings.txt" --for example

in your console application code

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);            
}
于 2013-04-24T08:55:08.080 回答
0

您可以使用:

#if DEBUG
    //Load connection from debug file
#else
    //Load connection from release file
#endif

不确定您是否可以使用像 TeamCityDebug 这样的自定义构建配置,但您可以试一试...

于 2013-04-24T10:01:10.397 回答