2

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

我可以通过右键单击项目并选择发布,然后选择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. 

我已经通过this后GitHub上显得有些已经列举了解决方案升级到VS2017,我已经做的v15.2;

Microsoft Visual Studio Enterprise 2017 
Version 15.2 (26430.16) Release 

任何想法?

编辑 - 解决方案

@狮子座-MSFT提供这种解决方案

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

这把文件放到BIN \发布\ PublishOutput。

我花了好几天寻找这个解决方案,我又增加了其他建议SO各种命令的参数和GitHub的论坛帖子,如/t:Publish/p:PublishProfileRootFolder/p:VisualStudioVersion=15.2。我删除了那些,只是使用上面最后创建我需要的发布输出的行。

回答

2

这并没有在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 Studio 2015创建的项目测试了命令行与VisualStudioVersion,它工作正常。不知道这是否是Visual Studio 2017的问题,我需要确认,如果是Visual Studio 2017的问题,我会将此问题发送给Visual Studio团队。

+0

这很好地解决了这个问题。我的最终命令行以msbuild myproject \ myproject.vbproj/p结尾:DeployOnBuild = true /p:PublishProfile=FolderProfile.pubxml/p:Configuration = Release。这将文件放入bin \ release \ PublishOutput。谢谢 – EiEiGuy

相关问题