Как автоматически изменить строку подключения при сборке с помощью Nant

Можно дать подсказки компилятора с константой также.... согласно следующему коду

#include <string>

void f(const std::string& s)
{

}
void x( std::string& x)
{
}
void main()
{
    f("blah");
    x("blah");   // won't compile...
}
8
задан ryudice 11 December 2009 в 05:24
поделиться

4 ответа

Я думаю, вы могли бы использовать задачу xmlpoke. Например, если ваш web.config -

<?xml version="1.0"?>
<configuration>
    <connectionStrings>
        <add name="myDb" connectionString="blah" providerName="blah"/>
    </connectionStrings>
</configuration>

, то вы можете добавить задачу в свой файл сборки следующим образом:

<xmlpoke 
    file="path_to_your_web_root\Web.config"
    xpath="/configuration/connectionStrings/add[@name='myDb']/@connectionString"
    value="your_connection_string" />

О, вот документация по задаче xmlpoke. http://nant.sourceforge.net/release/latest/help/tasks/xmlpoke.html

18
ответ дан 5 December 2019 в 06:23
поделиться

Я предполагаю, что вы хотите сделать это для того, чтобы строка подключения указывала на производственную среду, а не на среду разработки или тестирования, когда Nant создает код выпуска. Обычно у меня есть другой подход к решению этого сценария; храните строки подключения в отдельном файле. Это можно сделать с помощью атрибута configSource :

<!-- point out a file containing the connectionStrings config section -->
<connectionStrings configSource="connections.config"></connectionStrings>

Файл connections.config должен выглядеть примерно так:

<?xml version="1.0"?>
<connectionStrings>
    <add name="myDb" connectionString="{your connection string}"/>
</connectionStrings>

Поскольку строки подключения редко меняются в производственной среде, файл connections.config обычно может быть исключен из развертывания.

5
ответ дан 5 December 2019 в 06:23
поделиться

Я использую простой способ. Я подготовил множество версий конфигурационного файла, каждая из которых содержит свои строки подключения (DEV, TEST, PRODUCTION). В сценарии NANT, когда я создаю различные цели, я копирую конкретный файл конфигурации, чтобы перезаписать файл по умолчанию.

1
ответ дан 5 December 2019 в 06:23
поделиться

Другой альтернативой является использование шаблона, в котором у вас есть токен вместо строки подключения, например

<connectionString>
   <add name="myDb" connectionString="@CONNECTION_STRING@" />
</connectionStrings>

Затем используйте цепочки фильтров, чтобы заменить это соответствующей строкой.

<copy file="Web.config.template" tofile="Web.config" overwrite="true">
    <filterchain>
        <replacetokens>
            <token key="CONNECTION_STRING" value="${ConnectionString}" />
        </replacetokens>
    </filterchain>
</copy>

Значение свойство ConnectionString зависит от типа сборки.

Цепочки фильтров описаны в документации Nant

2
ответ дан 5 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: