Не удается заставить работать преобразование Web.config

Прежде всего, мы не используем проект веб-приложения, мы используем проект типа веб-сайта.

В нашем проекте у нас есть 3 конфигурации сборки: Dev (для разработки), Demo (для тестирования) и Live (финальный релиз, конечно).

У нас есть два файла (но в итоге их будет 4):

  • Web.config
  • Web.Dev.config

Фрагмент из первого:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="SomeConnectionString" connectionString="oldConnStr" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <system.web>
    <compilation targetFramework="4.0" debug="false">
      <assemblies>
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
      </assemblies>
    </compilation>
  </system.web>
</configuration>

А это трансформация:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="SomeConnectionString" connectionString="newConnString" providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)" />
  </connectionStrings>
  <system.web>
    <compilation debug="true" xdt:Transform="SetAttributes(debug)" />
  </system.web>
</configuration>

Это вообще не работает, и Web.config не становится «расширяемым», снимок экрана:

Web.config не расширяется
Значки взяты из Team Foundation Server

Кто-нибудь знает, как это сделать?


person Aidiakapi    schedule 04.01.2012    source источник
comment
Что вы ожидаете? Что вы пытались решить проблему?   -  person Brissles    schedule 04.01.2012
comment
Я пытался использовать конфигурации сборки по умолчанию (Debug и Release с их Web.config), публиковать и много гуглить.   -  person Aidiakapi    schedule 04.01.2012


Ответы (2)


Я узнал, что это невозможно сделать в проекте веб-сайта. Для этого требуется файл .csproj, а на веб-сайте его нет.

person Aidiakapi    schedule 19.01.2012

Вам нужен экземпляр конфигурации, соответствующий вашим преобразованиям web.config. Например, чтобы Web.Dev.config компилировался и преобразовывался (во время веб-развертывания и т. д.), вам необходимо скомпилировать проект в конфигурации Dev.

Если у вас не определена конфигурация Dev (по умолчанию вы обычно получаете конфигурацию отладки и выпуска при запуске нового проекта VS), вы можете щелкнуть раскрывающийся список со всеми перечисленными доступными конфигурациями. Обычно вы можете найти это рядом с зеленой кнопкой «воспроизведение» (начать отладку) в Visual Studio. Выберите параметр «Диспетчер конфигурации», а затем для выбранного проекта выберите раскрывающийся список конфигурации и выберите . Затем вы можете создать конфигурацию под названием Dev (и при необходимости скопировать настройки из существующей конфигурации). После этого обязательно обновите дерево проекта.

Также стоит отметить, что преобразования не применяются во время стандартных сборок в VS (т.е. Ctrl+Shift+B). Обычно они применяются, когда приложение выпускается через веб-развертывание или какой-либо инструмент развертывания. Применяемое преобразование будет зависеть от выбранной конфигурации сборки. т.е. разверните в конфигурации Dev, и ваши преобразования web.dev.config будут применены.

person harman_kardon    schedule 04.01.2012
comment
Я начал свой пост с того, что у нас действительно есть три конфигурации сборки: Dev, Demo и Live. Что касается преобразования, происходящего в специальных сборках (я предполагаю, что это включает в себя публикацию), я попробую сейчас :) - person Aidiakapi; 04.01.2012
comment
Преобразование не происходит, когда я публикую в соответствующей конфигурации сборки. - person Aidiakapi; 04.01.2012
comment
Интересно... единственный опыт, который у меня был с этим, связан со сборками TFS. Ваш новый файл web.dev.config зарегистрирован в вашей ветке TFS? - person harman_kardon; 04.01.2012
comment
Да, но мы не используем сборки/ветки TFS (наша TFS просто функционирует как эксклюзивная блокировка и управление историей). - person Aidiakapi; 04.01.2012