EiE*_*Guy 8 msbuild powershell visual-studio webdeploy visual-studio-2017
我正在尝试创建PowerShell v5脚本来构建和发布VS2017 WCF Web服务应用程序(.NET Framework 4),以便我可以在Bamboo中自动执行它.我有msbuild命令正常工作,正确构建,现在我需要使用FolderProfile将项目发布到文件夹.
通过右键单击项目并选择发布,然后选择FolderProfile,我可以手动成功完成.这会将需要部署的文件放在项目的bin\Release\PublishOutput位置中.我想在Powershell脚本中自动化该发布.
我在Sayed Hashimi的网站上尝试了这个建议,类似于下面的内容(我只使用15.2的VS2017版本,当然,用我的实际值替换项目名称和配置文件);
msbuild MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=<profile-name> /p:Password=<insert-password> /p:VisualStudioVersion=15.2
Run Code Online (Sandbox Code Playgroud)
但这并没有把任何文件放在该bin\Release\PublishOutput位置.看起来它只是做了一个标准的构建.
编辑:
当我运行上面的命令时,msbuild在输出中列出了这一行;
DeploymentUnpublishable:
Skipping unpublishable project.
Run Code Online (Sandbox Code Playgroud)
我在GitHub 上看了这篇文章,有些人引用了一个解决方案,更新到VS2017的v15.2,我已经做过了;
Microsoft Visual Studio Enterprise 2017
Version 15.2 (26430.16) Release
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑 - 解决方案
@ Leo-MSFT提供了这个解决方案......
msbuild myproject\myproject.vbproj /p:DeployOnBuild=true /p:PublishProfile=FolderProfile.pubxml /p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)
这将文件放入bin\release\PublishOutput.
我花了好几天寻找这个解决方案,我又增加了其他建议SO各种命令的参数和GitHub的论坛帖子,如/t:Publish,/p:PublishProfileRootFolder和/p:VisualStudioVersion=15.2.我删除了那些,只是使用上面的行,最后创建了我需要的已发布输出.
这没有将任何文件放在bin\Release\PublishOutput位置.看起来它只是做了一个标准的构建
我用你的命令行重现了这个问题.在研究了这个问题很长一段时间之后,我尝试删除参数" /p:VisualStudioVersion=15.2",然后使用命令行重新发布项目:
msbuild MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile="MyProfile.pubxml"
Run Code Online (Sandbox Code Playgroud)
它成功构建和发布,并且Web项目发布到您<publishUrl>在MyProfile.pubxml 中的选项" "中设置的文件夹.
因此,请尝试在MSBuild命令行中删除参数"/ p:VisualStudioVersion ",检查它是否适合您.
注意:我还使用Visual StudioVersion为Visual Studio 2015创建的项目测试该命令行,它工作正常.不确定这是否是Visual Studio 2017的问题,我需要确认一下,如果它是Visual Studio 2017的问题,我会将此问题发送给Visual Studio团队.