Преобразование 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 до создания установщика?
Ответы
Ответ 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 при его создании.