Преобразование ASP.NET Web.config не будет работать в установщике - PullRequest
11 голосов
/ 08 июня 2010

Я работаю над проектом ASP.NET в Visual Studio .NET 2010 и пытаюсь создать установщик MSI с помощью проекта веб-установки. Я добавил основной вывод из проекта (который, кажется, извлекает соответствующие зависимости) и файлы содержимого из проекта (который извлекает файлы Web.config и .svc).

Проблема заключается в том, что вместо применения XDT-преобразования и создания Web.config с использованием Web.Release.config он просто копирует Web.config, Web.Release.config и Web.Debug.config в установщик без каких-либо преобразований.

Как мне применить преобразование Web.config перед созданием установщика?

Ответы [ 3 ]

17 голосов
/ 07 сентября 2011

Я нашел обходной путь , который работает для меня:

  1. Создание необходимых конфигураций (Dev, QA, Production и т. Д.) И связанных преобразований веб-конфигурации.

  2. Используйте блокнот или другой текстовый редактор и включите в файл проекта веб-приложения (файл .csproj) перед тегом (в конце файла проекта) следующее:

    <Target Name="AfterBuild">
      <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="Web.Transformed.config" />
    </Target>
    

    Не включайте Web.Transformed.config в проект веб-приложения - если вы это сделаете, Visual Studio будет предупреждать вас об изменениях после каждой сборки, что довольно раздражает.

  3. В проекте веб-настройки: выберите Файлы содержимого -> Исключить фильтр и добавьте Web.config (и все остальные файлы конфигурации. *. Web, содержащие правила преобразования).

  4. В проекте веб-настройки: выберите значок редактора файловой системы -> папку веб-приложения -> Добавить файл и выберите Web.Transformed.config в корне папки проекта веб-приложения.

  5. На том же экране: щелкните правой кнопкой мыши Web.Transformed.config и переименуйте его в Web.config

Теперь вы можете создавать MSI-файлы с выбранной конфигурацией, и корневой файл web.config преобразуется! Обратите внимание, что это не влияет на файлы web.config в подпапках.

1 голос
/ 10 августа 2010

В итоге ответ оказался в другом посте SO, который я пропустил, когда искал, прежде чем спрашивать, потому что это не совсем то, что я хотел:

MSBuild Script и VS2010 публикуют приложение Web.config Transform

Сотрудник предложил использовать это для помещения преобразованного файла Web.config в каталог проекта bin и проекта веб-настройки, настроенного для извлечения файла Web.config из каталога bin и помещения его в установщик. Это оказалось наиболее работоспособным решением без установки каких-либо надстроек в Visual Studio.

0 голосов
/ 30 июня 2010

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

...