Публикация решения 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 под учетными записями администратора, чтобы это работало? Все предложения приветствуются.

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

Другие вопросы по тегам