Я не использовал TeamCity, но я написал несколько приложений с динамически меняющимися ConnectionStrings во время входа в систему (т. Е. Во время выполнения), и это довольно просто.
Вы не сказали, как вы подключаетесь кваша база данных.Поскольку вы упоминаете app.config, я полагаю, что это ADO.NET DataSets или simmilar технология, которая создает только для чтения (getter) ConnectionString в вашем Settings.Designer.cs / app.config.
То, что я сделал, было создать метод setter в Settings.cs (не Settings.Designer.cs) для свойства ConnectionString, например:
public void setNorthwindConnectionString(String value) {
this["NorthwindConnectionString"] = value;
}
Мой сгенерированный DataSet затем использует эту NorthwindConnectionString для доступаdata.
Вы можете использовать директивы препроцессора для условной установки вашей ConnectionString:
#if DEBUG
Console.WriteLine("Mode=Debug");
Settings.Default.setNorthwindConnectionString("(DebugDBConnectionString)");
#else
Console.WriteLine("Mode=Release");
Settings.Default.setNorthwindConnectionString("(ReleaseDBConnectionString)");
#endif
Вы также можете зашифровать строки подключения и скопировать нужный app.configво время события после сборки.