2010-06-07 2 views
11

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

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

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

ответ

1

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

MSBuild Script and VS2010 publish apply Web.config Transform

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

0

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

+1

Это может быть ответ; однако у меня нет прав администратора (так как это рабочий компьютер), поэтому я не могу проверить его, чтобы убедиться. \ В итоге я добавил запись в файл .csproj для выполнения преобразования - я буду скоро опубликуйте детали. –

17

Я нашел workaround, который работает для меня:

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

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

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

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

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

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

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

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

+0

Я могу подтвердить, что этот метод работает. Он также подробно описан в конце этого сообщения: http://forums.asp.net/p/1596387/4050004.aspx –

+0

+1 Работало с удовольствием! –

+0

В пункте 2 вы советуете не добавлять Web.Transformed.config, но в пункте 4 вы просите добавить файл Web.Transformed.config. Оба эти пункта противоречат друг другу, иначе я что-то упускаю. Может ли кто-нибудь помочь мне разобраться в деталях. –

Смежные вопросы