我正在尝试创建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
。我删除了那些,只是使用了上面的行,最后创建了我需要的已发布输出。
答案 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团队。