2016-11-18 1 views
2

У меня есть «веб-приложение» в Azure, на котором я развертываю/публикую веб-приложение .NET с помощью Visual Studio. (Build -> Publish), и он работает.Как развернуть веб-приложение .Net для Azure с помощью Powershell

Я хочу иметь возможность развертывать/публиковать мое приложение с использованием сценария Powershell. Я получил следующий сценарий, чтобы работать для сборки части:

CMD> "c:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe" WebApplication1.sln 

Чтобы сделать это также развернуть, мне нужно добавить несколько параметров:

CMD> "c:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe" WebApplication1.sln /p:DeployOnBuild=true /p:PublishProfile="C:\Users\jgodse\Documents\Visual Studio 2015\Projects\WebApplication1\WebApplication1\Properties\PublishProfiles\jg-7-web-app-1 - Web Deploy.pubxml" /p:Configuration=Release 

я получил ошибку:

Build FAILED. 

"c:\Users\jgodse\Documents\Visual Studio 2015\Projects\WebApplication1\WebApplication1.sln" (default target) (1) -> 
"c:\Users\jgodse\Documents\Visual Studio 2015\Projects\WebApplication1\WebApplication1\WebApplication1.csproj" (default target) (2) -> 
(MSDeployPublish target) -> 
    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4295,5): msdeploy error ERROR_USER_UNAUTHORIZED: Web deployment task failed. (Connected to the remote computer ("jg-7-web-app-1.scm.azurewebsites.net") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_UNAUTHORIZED.) [c:\Users\jgodse\Documents\Visual Studio 2015\Projects\WebApplication1\WebApplication1\WebApplication1.csproj] 

    0 Warning(s) 
    1 Error(s) 

Мне явно не хватает моих учетных данных Azure (видя, что Visual Studio удалось их захватить), и я также не работаю в Powershell.

Так что я взял всю команду и поместить его в файл с именем deploy.bat, открыл окно Powershell и сделал следующее:

PS> Login-AzureRmAccount 

(я напечатал в моем пользователя/пароль в GUI popup).

PS> cmd /c .\deploy.bat 

Сборка была прекрасна, но при попытке публикации я получил ту же ошибку. Я полагаю, что учетные данные Azure не выполнялись при обстреле с программой CMD.

Как использовать Powershell для вызова MSBuild в моем проекте .Net для публикации в веб-приложении Azure?

ответ

4

Вы можете использовать существующий файл .pubxml, но вам нужен пароль, чтобы иметь возможность развертывания. Есть несколько способов получить его. Наиболее очевидным является то, чтобы получить от портала, перейдя к лезвию вами веб-приложение, а затем нажав на кнопку «Далее» и, наконец, на «Получить профиля публикации»

enter image description here

Этот файл содержит все виды но тот, который вам нужен, называется userPWD - это пароль, который вам нужно использовать. Скопируйте пароль и добавьте его в команду MsBuild:

CMD> "c: \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ msbuild.exe" WebApplication1.sln/p: DeployOnBuild = true/p: PublishProfile = "C: \ Users \ jgodse \ Documents \ Visual Studio 2015 \ Projects \ WebApplication1 \ WebApplication1 \ Properties \ PublishProfiles \ jg-7-web-app-1 - Web Deploy.pubxml"/p: Configuration = Release /p: Пароль = «Значение userPWD»

Очевидно, что сохранение этого значения в скриптах сборки не рекомендуется. Что вы можете сделать, это загрузить настройки публикации с помощью Powershell (Get-AzurePublishSettingsFile), извлечь значение userPWD, передать его в MsBuild для публикации своего приложения и, наконец, очистить все.

Существуют различные способы реализации инфраструктуры, и я предлагаю вам не лучшее решение для вас, но вам предстоит экспериментировать и решать, что лучше всего подходит для вас.

Некоторых ресурсы:

Automate Everything (Building Real-World Cloud Apps with Azure) - Это один использует ASM вместо менеджера ресурсов, но вы можете легко настроить его, чтобы использовать ARM Using Windows PowerShell scripts to publish to dev and test environments

Надеется, что это помогает.

+1

спасибо. Это было именно то, что мне нужно. –