Существуют ли хорошие шаблоны для сопоставления конфигураций решения с средами и использования MsDeploy для упаковки в среде?
Кратчайшая версия: Захватите этот файл и попробуйте изменить файл .msbuild так, чтобы пакет былсоздал.
Подробности
У меня есть решение с большим количеством библиотек и приложением ASP.NET MVC.Я запускаю сборку с помощью файла msbuild, который вызывает основное решение, а затем выполняет другие действия.Я хочу использовать новую упаковку msdeploy для подготовки файла .zip для последующего распространения, но у меня возникают различные трудности.
Мое решение имеет 4 конфигурации: Local
, Dev
, Test
,и Prod
, которые соответствуют условиям, которые я хочу отобразить.В этом решении все библиотеки имеют режимы Debug
и Release
, как обычно.Например, в режиме решения Local
все библиотеки компилируются в режиме Debug
.Затем основное приложение имеет соответствующие среды с решением, так что у меня может быть Web.Dev.config
и т. Д., Что кажется естественным способом использования вещей.
Если я упаковываю так:
<Target Name="BuildWebPackage">
<MSBuild Projects="..\Publisher\Site\Site.vbproj"
Targets="Package"/>
</Target>
У меня возникает проблема, когда Configuration=Local
неправильно сопоставлен с проектами библиотеки, на которые Site.vbproj
ссылается, и он не может их скомпилировать.
Я вижу два возможных решения: одного я не могу заставить работать правильно, а другой крайне уродлив.
Попытка 1
Я пытаюсь вызвать цель Package
через решение (в этом примере "Приложения »- это папка решения, в которой находится проект сайта ... Я упростил эту статью, поскольку в решении фактически есть несколько приложений.)
<Target Name="BuildWebPackage">
<MSBuild Projects="..\Publisher\Publisher.sln"
Targets="Applications\Site:Package"/>
</Target>
Я думаю, что это SolutionFolder\ProjectName:Target
синтаксис, как это сделать, потому что :Clean
работает ... однако, это бросает
error MSB4057: The target "Applications\Site:Package" does not exist in the project.
Попытка 2
Теперь для уродливого решения: это работает, если я изменяюВСЕ мои библиотеки имеют 4 дополнительные конфигурациидля этих 4 конфигураций решения.Тем не менее, это уродливый и действительно плохой план, если я захочу позже совместно использовать общую библиотеку с проектом, который имеет другие среды.Кроме того, эти среды не имеют ничего общего с библиотекой и имеют смысл только в контексте приложений верхнего уровня, использующих библиотеки.Вкус плохой.
Да?
Мне нравится иметь в своем решении несколько сред и новые необычные вещи для замены Web.config, но я не знаю, как вызватьЗадача msdeploy Package
в этой ситуации, чтобы я мог собрать пакет в TeamCity.
(Обратите внимание, что я, вероятно, НЕ хочу вызывать командную строку msdeploy, поскольку она используется для превращения приложения IIS в пакет.Не то, что я здесь делаю.)
Образец
Опять же, я был полностью озадачен здесь, поэтому, если вы хотите помочь в эксперименте, я собрал этот пример решения .