如何自动将Visual Studio 2017 Web项目发布到文件夹

时间:2017-07-28 16:15:54

标签: visual-studio powershell msbuild visual-studio-2017 webdeploy

我正在尝试创建PowerShell v5脚本来构建和发布VS2017 WCF Web服务应用程序(.NET Framework 4),以便我可以在Bamboo中自动执行它。我有msbuild命令正常工作,正确构建,现在我需要使用FolderProfile将项目发布到文件夹。

我可以通过右键单击项目并选择发布,然后选择FolderProfile来手动成功。这会将需要部署的文件放在项目的bin \ Release \ PublishOutput位置中。我想在Powershell脚本中自动化该发布。

我在Sayed Hashimi's网站上尝试了推荐,这与下面的内容类似(我只使用VS2017版本的15.2,当然,用我的实际值替换项目名称和配置文件);

msbuild MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=<profile-name> /p:Password=<insert-password> /p:VisualStudioVersion=15.2 

但是这并没有将任何文件放在bin\Release\PublishOutput位置。看起来它只是做了一个标准的构建。

编辑:

当我运行上面的命令时,

msbuild在输出中列出了这一行;

DeploymentUnpublishable:
    Skipping unpublishable project.

我查看了GitHub上的this帖子,有些人引用了一个解决方案,更新到VS2017的v15.2,我已经做过了;

Microsoft Visual Studio Enterprise 2017
Version 15.2 (26430.16) Release

任何想法?

编辑 - 解决方案

@ Leo-MSFT提供了这个解决方案......

msbuild myproject\myproject.vbproj /p:DeployOnBuild=true /p:PublishProfile=FolderProfile.pubxml /p:Configuration=Release

这会将文件放入bin \ release \ PublishOutput。

我花了几天时间搜索此解决方案,并在其他SO和GitHub论坛帖子中添加了各种命令参数,例如/t:Publish/p:PublishProfileRootFolder/p:VisualStudioVersion=15.2。我删除了那些,只是使用了上面的行,最后创建了我需要的已发布输出。

1 个答案:

答案 0 :(得分:5)

  

这没有将任何文件放在bin \ Release \ PublishOutput位置。看起来它只是做了标准构建

我已使用您的命令行重现了此问题。在研究了这个问题很长一段时间之后,我尝试删除参数“/p:VisualStudioVersion=15.2”,然后使用命令行重新发布项目:

msbuild MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile="MyProfile.pubxml"

它成功构建和发布,并且Web项目发布到您在MyProfile.pubxml中选项“<publishUrl>”中设置的文件夹。

因此,请尝试在MSBuild命令行中删除参数“/ p:VisualStudioVersion ”,检查它是否适合您。

注意:我还使用Visual StudioVersion为Visual Studio 2015创建的项目测试该命令行,它运行正常。不确定这是否是Visual Studio 2017的问题,我需要确认一下,如果它是Visual Studio 2017的问题,我会将此问题发送给Visual Studio团队。

相关问题