Существует превосходный разговор о 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) Несанкционированный.
У меня был аналогичная проблема и решение должно было иметь следующий параметр:
/ 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, но для меня это не имеет большого значения.
К сожалению, на данный момент информации об этом немного. Я дам вам несколько советов в конце сообщения.
Что касается вашей проблемы, я видел это раньше, когда пытался выполнить развертывание с помощью 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
Итак, чтобы изучить эту тему прямо сейчас, вам нужно изучить эти файлы и изучить их самостоятельно.
Я собираюсь работать над чем-то, что будет подробно освещать эти технологии, но это не будет выходить в ближайшее время, и мне еще многое предстоит выяснить для себя по этому поводу.
Можете ли вы опробовать комбинацию имени пользователя и пароля и сообщить мне, сработало ли она для вас?
Вот шаги, которые, наконец, сработали для меня. Я хотел поработать с RemoteAgent, но не мог, что бы я ни пытался.
Вам не обязательно делать именно это, но у меня это работает так.
Помните, что это все аргументы 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, вероятно, здесь тоже подойдет.
Полезные статьи:
Обратите внимание, что вы также можете установить DeployTarget = Package - это подготовит пакет, но не развернет его сразу. Для получения дополнительной информации см. это сообщение в блоге .