我有一个" Web应用程序"在我使用Visual Studio部署/发布.Net Web应用程序的Azure中。 (构建 - >发布),它的工作原理。
我希望能够使用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弹出窗口输入了我的用户名/密码)。
PS> cmd /c .\deploy.bat
构建很好,但在尝试发布时遇到了同样的错误。我猜测Azure凭证在外壳到CMD程序时没有完成。
如何使用Powershell在我的.Net项目上调用MSBuild以发布到Azure Web应用程序?
答案 0 :(得分:5)
您可以使用现有的.pubxml文件,但需要密码才能部署。有几种方法可以获得它。最明显的一个是通过导航到Web应用程序的刀片,然后单击“更多”,最后点击“获取发布配置文件”,从门户网站获取它
此文件包含所有类型的数据,但您需要的数据称为 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:Password =”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
希望这有帮助。