Подтвердить что ты не робот

Преобразование ASP.NET Web.config не будет работать в установщике

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

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

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

4b9b3361

Ответ 1

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

MSBuild Script и публикация VS2010 применяют преобразование Web.config

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

Ответ 2

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

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

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

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

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

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

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

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

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

Ответ 3

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