Можно дать подсказки компилятора с константой также.... согласно следующему коду
#include <string>
void f(const std::string& s)
{
}
void x( std::string& x)
{
}
void main()
{
f("blah");
x("blah"); // won't compile...
}
Я думаю, вы могли бы использовать задачу 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
Я предполагаю, что вы хотите сделать это для того, чтобы строка подключения указывала на производственную среду, а не на среду разработки или тестирования, когда 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
обычно может быть исключен из развертывания.
Я использую простой способ. Я подготовил множество версий конфигурационного файла, каждая из которых содержит свои строки подключения (DEV, TEST, PRODUCTION). В сценарии NANT, когда я создаю различные цели, я копирую конкретный файл конфигурации, чтобы перезаписать файл по умолчанию.
Другой альтернативой является использование шаблона, в котором у вас есть токен вместо строки подключения, например
<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