Подтвердить что ты не робот

Публикация решения vs2012 от TeamCity

Я использую Visual Studio 2012 и функцию публикации. Я создал профиль публикации, который развертывает мое приложение на сервере разработки, и он отлично работает при выполнении с vs2012 на моей машине. Вот моя проблема; на сервере разработки у меня также установлен TeamCity, и я хотел бы запустить публикацию после завершения сборки. Поэтому я создал простой шаг сборки, который выглядит так:

Build file path: .\src\Solution.sln
Targets: Rebuild
Command line parameters: /p:DeployOnBuild=true;PublishProfile=Ci

Когда этот шаг выполняется, я получаю следующую ошибку:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4377, 5): error ERROR_USER_NOT_ADMIN: Web deployment task failed. 
(Connected to 'dev.domain.com' using the Web Deployment Agent Service, but could not authorize. Make sure you are an administrator on 'dev.domain.com'. 

Профиль Ci содержит имя пользователя и пароль, которые работают при запуске публикации из Visual Studio на моей машине. Я также попытался передать имя пользователя и пароль в качестве параметров на этапе сборки, но я получаю тот же результат. Нужно ли мне запускать службы TeamCity под учетной записью администратора, чтобы заставить это работать? Все предложения приветствуются.

4b9b3361

Ответ 1

Я только что написал об этом в http://sedodream.com/2013/01/06/CommandLineWebProjectPublishing.aspx.

Вы довольно близки, надеюсь, я смогу закрыть разрыв.

Вы правы, что имя пользователя и пароль указаны в диалоговом окне публикации VS, но мы не сохраняем пароль в файле .pubxml. В настоящее время он сохраняется в файле .pubxml.user, и этот файл вообще не используется для сценариев командной строки. Из-за этого вам нужно будет пройти в собственность. Поэтому в вашем случае это должно быть

msbuild .\src\solution.sln /p:DeployOnBuild=true /p:PublishProfile=ci /p:Password=<insert-password>

Если ваш веб-сервер не имеет доверенных сертификатов, вам может потребоваться также передать /p:AllowUntrustedCertificate=true.

Одно небольшое дополнение, которое не может быть напрямую связано с вашей проблемой, но может быть полезно для других, которые могут увидеть это позже. Если вы создаете файл .csproj/.vbproj(и, возможно, в некоторых сценариях, где используется файл .sln), вы должны передать свойство /p:VisualStudioVersion=11.0. Дополнительная информация об этом доступна в моем блоге http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx