Как создать отдельный пакет для веб-развертывания с использованием TFS - PullRequest
6 голосов
/ 08 марта 2012

Мне просто нужно создать пакет Web Deployement, используя сборку TFS, и я не хочу автоматически развертывать его в IIS.

Я добавил следующие два параметра в определение сборки -> Аргументы MSBuild

/ p: CreatePackageOnPublish = true / p: DeployOnBuild = true

Проблема заключается в том, что я не получаю ZIP-файл в удаленном месте и получаю следующую ошибку.

C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets (1657): задача «MapUriToIisWebServer» неожиданно завершилась неудачей.System.Runtime.InteropServices.COMException (0x80005000): Неизвестная ошибка (0x80005000) в System.DirectoryServices.DirectoryEntry.Bind (Boolean throwIfFail)
в System.DirectoryServices.DirectoryEntry.Bind () в System.DirectoryServicesEirect_Service.irect) в System.DirectoryServices.DirectoryEntries.CheckIsContainer () в System.DirectoryServices.DirectoryEntries.Find (имя строки, String schemaClassName) в Microsoft.Web.Publishing.Tasks.MapUriToIisWebServer.get.IisMajorVebSriSWis.Execute () в Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () в Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (задача IT-класса-задачи, задача-выпадающего класса, задача-класса-задачи, класс-объект-задачи, класс-объект-задачи, класс-объект-задача, класс-объект-задача, класс-объект-задачиBoolean & taskResult)

В чем может быть проблема?


Теперь я получаю другую ошибку

ошибка: не удалось выполнить задачу веб-развертывания. (Невозможно создать объект типа 'манифест' и путь 'e: \ TFS \ Dev \ ApplicationName \ Binaries \ Release_PublishedWebsites \ ApplicationName_Package \ ApplicationName.SourceManifest.xml'.)

ошибка: невозможно создать объект типа 'манифест' и путь 'e: \ TFS \ Dev \ ApplicationName \ Binaries \ Release_PublishedWebsites \ ApplicationName_Package \ ApplicationName.SourceManifest.xml'.

ошибка: одна илинедопустимы другие записи в манифесте 'sitemanifest'.

ошибка: приложение '/ ApplicationName' не существует на сайте 'Веб-сайт по умолчанию'.

Ответы [ 3 ]

5 голосов
/ 08 марта 2012

Полагаю, вам просто нужно добавить цель "Package" в вашу сборку для веб-проекта.

 /t:Build;Package

Я использовал эту цель в моей сборке tfs для создания папки _PublishedWebsite с zip-пакетом некоторое время, теперь с успехом.

РЕДАКТИРОВАТЬ: Объяснение цели пакета Если вы посмотрите на файл csproj для вашего веб-приложения как файл XML, вы увидите, что он включает в себя следующее

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

Это включает в себя несколько веб-целей в процессе сборки. Взломайте этот файл, и внизу вы увидите, что он в свою очередь включает

 <Import Project="..\Web\Microsoft.Web.Publishing.targets" Condition="Exists('..\Web\Microsoft.Web.Publishing.targets')" />

Этот файл содержит определение процесса веб-развертывания для MSBuild. Вы увидите, что она объявляет переменную, обозначающую «цель», которая будет вызываться в Deploy, как «Пакет»

 <DeployDefaultTarget Condition="'$(DeployDefaultTarget)'==''">Package</DeployDefaultTarget>

Если вы прочтете этот файл далее, он даст вам представление о том, как упаковка и развертывание работают под прикрытием, и каким набором свойств и целей вы можете манипулировать для настройки своей сборки.

Короче говоря, если вы позвоните

 msbuild yourwebapplication.csproj /t:Package /p:Configuration=Release 

Он должен создать вам пакет веб-развертывания для конфигурации выпуска вашего приложения.

0 голосов
/ 07 ноября 2016

Возможный дубликат MSBuild DeployOnBuild = true не публикуется

У меня была такая же проблема с Atlassian Bamboo, и это исправило ее для меня: с компьютера с Visual Studio скопируйте содержимое "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web "на сервер сборки TFS.

0 голосов
/ 12 октября 2012

У меня была та же проблема, и единственное, что ее решило, это:

  1. Откройте консоль управления IIS
  2. Перейдите на веб-сайт по умолчанию
  3. Добавьте новое приложение с именем «ApplicationName»
  4. Запустите msbuild снова.Это будет работать.
...