Как я могу заставить TFS2010 выполнять MSDEPLOY для меня через MSBUILD?

Существует превосходный разговор о PDC, доступный здесь от Vishal Joshi, который описывает новые функции MSDEPLOY в Visual Studio 2010 - а также как развернуть приложение в TFS. (Существует также большой разговор от Scott Hanselman, но он не входит в TFS).

Можно использовать MSBUILD в TFS2010 для вызова до MSDEPLOY для развертывания пакета на IIS. Это сделано посредством параметров к MSBUILD.

Разговор объясняет некоторые параметры командной строки, такие как:

/p:DeployOnBuild
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=InProc
/p:MSDeployServiceURL=localhost
/p:DeployIISAppPath="Default Web Site"

Но где документация для этого - я не могу найти никого?

Я тратил весь день попытку заставить это работать и не могу вполне разобраться в ней и продолжать заканчивать с различными ошибками. Если я выполняю пакет cmd файл это развертывается отлично. Если я выполняю WebDeploy через Visual Studio, это также работает отлично.

Но я хочу получить целую пробежку развертывания msbuild использование этих аргументов и не отдельного вызова к msdeploy или выполнение пакета .cmd файл. Как я могу сделать это?

PS. Да я действительно имею Web Deployment Agent Service выполнение. У меня также есть сервис управления, работающий под IIS. Я попытался использовать обоих.


Args я использую:

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:Configuration=Release 
/p:CreatePackageOnPublish=True  
/p:DeployIisAppPath=staging.example.com   
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd 
/p:AllowUntrustedCertificate=True

предоставление меня:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets (2660): VsMsdeploy перестал работать. (С удаленным агентом (URL https://staging.example.com:8172/msdeploy.axd?site=staging.example.com) нельзя было связаться. Удостоверьтесь, что удаленный сервис агента установлен и запущен на целевом компьютере.) Детали ошибки: с Удаленным агентом (URL https://staging.example.com:8172/msdeploy.axd?site=staging.example.com) нельзя было связаться. Удостоверьтесь, что удаленный сервис агента установлен и запущен на целевом компьютере. Неподдерживаемый ответ был получен. Заголовок ответа 'MSDeploy. Ответ' был, '' но 'v1' ожидался. Удаленный сервер возвратил ошибку: (401) Несанкционированный.

78
задан Zach Johnson 17 April 2010 в 02:33
поделиться

4 ответа

У меня был аналогичная проблема и решение должно было иметь следующий параметр:

/ p: MSDeployPublishMethod = RemoteAgent

Вот все параметры, которые я использовал.

/ p: DeployOnBuild = True / p: DeployTarget = MSDeployPublish / p: MSDeployPublishMethod = RemoteAgent / p: MsDeployServiceUrl = http: // my-server-name username = myusername / p: password = mypassword

ПРИМЕЧАНИЕ. Я не использую DeployIisAppPath, потому что я создаю решение и пытаюсь создать три веб-приложения одновременно. Также я думаю, что ваш MsDeployServiceUrl должен быть просто http://staging.example.com

Похоже, что при использовании InProc (который может быть по умолчанию) для MSDeployPublishMethod MSBuild игнорирует MsDeployServiceUrl и всегда пытается развернуть на локальном сервер. Я изменил его на RemoteAgent, и все три моих веб-приложения успешно развернулись. Я заметил, что файл Package больше не содержится в папке MyWebApplication_Package, но для меня это не имеет большого значения.

6
ответ дан 24 November 2019 в 10:39
поделиться

К сожалению, на данный момент информации об этом немного. Я дам вам несколько советов в конце сообщения.


Что касается вашей проблемы, я видел это раньше, когда пытался выполнить развертывание с помощью MSDeploy, а учетная запись, на которой я работал, не имела разрешений на выполнение развертывания на целевой машине. Поэтому вам нужно взглянуть на учетную запись, под которой работают ваши сборки, и посмотреть, есть ли у этой учетной записи права на развертывание на целевой машине. Если нет, то у вас есть несколько вариантов; предоставьте пользователю сборки права или передайте имя пользователя / пароль в.

Если вы хотите передать значения, вам нужно будет определить элемент с именем MsDeployDestinationProviderSetting , и его метаданные должны будут содержать необходимые значения.

Итак, в вашем файле проекта (или через переданные свойства) определите что-то вроде следующего.

<PropertyGroup>
    <UserName>USERNAME-HERE</UserName>
    <Password>PASSWORD-HERE
</PropertyGroup>

О том, где вы можете найти документацию, как я уже сказал, пока еще немного. Но поскольку весь конвейер веб-публикации отражен в целях и задачах MSBuild, вы можете многое изучить самостоятельно, если знакомы с MSBuild. Если вы посмотрите на файлы .csproj (или .vbproj) для веб-проектов, созданных с помощью Visual Studio 2010, вы заметите следующее утверждение:

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

Это импортирует файл, расположенный по адресу % ProgramFiles (x86)% \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets , и этот файл, в свою очередь, импортирует % ProgramFiles (x86)% \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.target

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


Я собираюсь работать над чем-то, что будет подробно освещать эти технологии, но это не будет выходить в ближайшее время, и мне еще многое предстоит выяснить для себя по этому поводу.

Можете ли вы опробовать комбинацию имени пользователя и пароля и сообщить мне, сработало ли она для вас?

16
ответ дан 24 November 2019 в 10:39
поделиться

Вот шаги, которые, наконец, сработали для меня. Я хотел поработать с RemoteAgent, но не мог, что бы я ни пытался.

Вам не обязательно делать именно это, но у меня это работает так.

  • Настройте WMSVC
  • Убедитесь, что служба запущена.
  • Настройте пользователя IIS (щелкните TOP MOST SERVERNAME в IIS) и перейдите в «Пользователи диспетчера IIS». Я предлагаю сделать его отличным от имени вашего окна.
  • Убедитесь, что учетная запись пользователя WMSVC (для меня LOCAL SERVICE) имеет права на запись в каталог IIS, который вы используете.
  • В моем случае я использую сертификат SSL (даже если он попадает в localhost).

Помните, что это все аргументы MSBUILD, добавленные в определение сборки TFS

/p:DeployOnBuild=True 
/p:DeployTarget=MSDeployPublish 
/p:MSDeployPublishMethod=WMSVC 
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd 
/p:username=sweaveriis 
/p:password=abcd1234 
/p:DeployIisAppPath=staging.example.com/virtual_directory_name
/p:AllowUntrustedCertificate=True

Примечание: staging.example.com на самом деле является локальным ящиком с записью файла hosts , указывающей на 127.0.0.1. Localhost, вероятно, здесь тоже подойдет.

Полезные статьи:

Устранение неполадок MSDeploy

Дополнительные способы устранения неполадок

19
ответ дан 24 November 2019 в 10:39
поделиться

Обратите внимание, что вы также можете установить DeployTarget = Package - это подготовит пакет, но не развернет его сразу. Для получения дополнительной информации см. это сообщение в блоге .

4
ответ дан 24 November 2019 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: