MSDeploy не развертывается на удаленном сервере с использованием MSBuild и Visual Studio 2010 - PullRequest
17 голосов
/ 15 апреля 2010

В настоящее время я использую Visual Studio Team System 2010 RC и пытаюсь настроить Build Service, чтобы построить свое решение и развернуть в нем 3 веб-приложения. Я создал пользовательскую конфигурацию сборки под названием «Интеграция» и настроил «Имя веб-сайта / приложения IIS для использования на конечном сервере» на вкладке «Пакет / публикация» в свойствах для каждого из веб-приложений.

В своем определении сборки я установил следующие аргументы:

/ p: DeployOnBuild = True / p: DeployTarget = MSDeployPublish / p: MSDeployPublishMethod = InProc /p:MsDeployServiceUrl=http://my-server-name:8172/msdeploy.axd*100PageAscess = Правда

Однако, когда я запускаю сборку, я получаю следующую ошибку для всех трех веб-приложений:

Обновление setAcl (MyProjectName).

C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets (3481,5): ошибка: не удалось выполнить задачу веб-развертывания. (Попытка выполнить несанкционированную операцию.)

Хотя я не думаю, что это моя настоящая проблема. Эта ошибка возникает после следующей записи в журнале: Обновление setAcl Это то, что вызывает сообщение об ошибке, но похоже, что MSDeploy пытается развернуть локальный IIS на сервере сборки, а не на сервере, который я указал параметром MsDeployServiceUrl.

Посмотрев файл целей в C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets, я добавил EnablePackageProcessLoggingAndAssert, который добавляет дополнительную запись в журнал. В журнале показана строка emptry для значения MsDeployServiceUrl. В цели я также заметил, что MsDeployServiceUrl имеет строчные буквы s, что несколько сбивает с толку, поскольку имя задачи MSDeployPublish имеет заглавные буквы S. Я пытался использовать его с заглавными буквами, затем снова с использованием строчных букв, но ни одна из них не работала.

Еще пара замечаний:

  1. Мой сервис сборки работает как СЕТЬ СЕРВИС.
  2. сервер я пытаясь развернуть на другой домен.
  3. Я тоже пытался добавить / Р: имя пользователя = MYDOMAIN \ MyUserName / p: пароль = мой пароль к списку параметров MSBuild, но это не помогло.

Кто-нибудь знает, правильно ли я предоставляю параметры? Или предоставить мне правильные?

Спасибо

Ответы [ 3 ]

26 голосов
/ 16 апреля 2010

После многих раундов изменения параметров я смог найти решение и успешно развернуть сборку. Параметры, которые я использовал в итоге:

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

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

0 голосов
/ 16 апреля 2010

Для сборки, которую использует Team Build, какой файл вы указали? Если это был файл решения, то просто передача этих свойств в него не означает, что они затем распространяются на каждый файл проекта при сборке. При создании файлов решения только ограниченный набор свойств передается строящимся проектам. В этом случае вы должны создать файл .proj, который по существу заменит файл вашего решения и передаст эти свойства.

Недавно я писал в блоге о , как заменить файл вашего решения файлом MSBuild .

Дайте мне знать, если это не относится к вам или не помогает вам.

К вашему сведению, вы также можете быть заинтересованы в этой другой ветке на MSDeploy, но это не та проблема, что у вас здесь. Как мне заставить TFS2010 запускать MSDEPLOY для меня через MSBUILD? .

0 голосов
/ 15 апреля 2010

Учитывая, что vs2010 является RTM'd, вы можете рассмотреть вопрос об обновлении и посмотреть, исчезнет ли проблема.

...