Преобразование web.config - удаление комментариев из раздела строки подключения

Я храню несколько различных строк подключения в моем файле web.config для разработки и тестирования. Все, кроме одного, закомментированы, поэтому я могу менять информацию по мере необходимости.

Когда я публикуюсь, я хочу заменить все (включая комментарии) в узле connectionStrings следующим образом:

<add name="myDb" connectionString="Data Source={SERVER};Initial Catalog=ManEx;User Id={USER};Password={PASSWORD};" providerName="System.Data.SqlClient"  />
<!--<add name="myDb" connectionString="Data Source={SERVER};Initial Catalog=ManEx;Integrated Security=True" providerName="System.Data.SqlClient" />-->

Я знаю, как изменить активную строку с этим:

<add name="myDb"
     connectionString="Data Source={SERVER};Initial Catalog=ManEx;User Id={USER};Password={PASSWORD};"
     providerName="System.Data.SqlClient"
     xdt:Transform="Add" 
     xdt:Locator="Match(name)"/>

Но я не знаю, как убрать комментарии, которые я не хочу, и добавить комментарий, который я хочу.

Есть идеи?

4 ответа

Решение

Вместо преобразования строки или использования "Удалить" и "Вставить" очистите раздел, попробуйте использовать "Заменить".

Например:

<connectionStrings xdt:Transform="Replace">

    <add name="myDb"
         connectionString="Data Source={SERVER};Initial Catalog=ManEx;User Id={USER};Password={PASSWORD};"
         providerName="System.Data.SqlClient" />

</connectionStrings>

Вы можете настроить этот раздел именно так, как вы хотите, даже если это означает, что вы добавляете новые комментарии.

На основании этого ответа я сделал следующее:

  • Удалены существующие connectStrings раздел в Web.config который содержит закомментированные строки соединения, используемые во время отладки;
  • Повторно добавил connectionStrings раздел с правильной строкой подключения, которая будет использоваться при развертывании приложения.

Так в вашем Web.config преобразовать файл у вас что-то вроде этого:

<!-- Removes the existing connectionStrings section which contains internal connection strings used for debugging -->
<connectionStrings xdt:Transform="Remove">    
</connectionStrings>

<!-- Re-adding the existing connectionStrings section -->
<connectionStrings xdt:Transform="Insert">

<add name="MyConnectionStringName" connectionString="Data Source=CLUSTERSQL;Initial Catalog=MyDatabase;Integrated Security=True;multipleactiveresultsets=True" providerName="System.Data.SqlClient"  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>

</connectionStrings>

В Visual Studio 2013 у вас может быть несколько файлов Web.config.

Также, когда вы создаете новый проект, VS создает для вас 2: Web.Debug.config и Web.Release.config. Таким образом, вы можете иметь другой Web.Config для вашего проекта отладки и для вашего проекта релиза

Если вам нужно добавить / вставить / установить атрибуты внутри замененной строки подключения (например, если вы используете развертывания), вы можете вложить преобразования, чтобы удалить комментарии и заменить атрибуты:

<connectionStrings xdt:Transform="Replace">
    <add name="connectionDatabase" 
         connectionString="#{ConnectionString}" 
         xdt:Transform="SetAttributes"
         xdt:Locator="Match(name)" />
</connectionStrings>
Другие вопросы по тегам