【问题标题】:How to automate Visual Studio 2017 web project publish to folder如何自动化 Visual Studio 2017 Web 项目发布到文件夹
【发布时间】:2017-07-28 16:15:54
【问题描述】:

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

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

我试过Sayed Hashimi's网站上的推荐,类似下图(我只是用VS2017版本的15.2,当然项目名和profile替换成我的实际值);

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。我删除了这些,只使用了上面的行,最终创建了我需要的已发布输出。

【问题讨论】:

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


    【解决方案1】:

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

    我已经用你的命令行重现了这个问题。这个问题研究了半天,我尝试把参数“/p:VisualStudioVersion=15.2”去掉,然后用命令行重新发布项目:

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

    它构建和发布成功,并将 Web 项目发布到您在 MyProfile.pubxml 中的选项“&lt;publishUrl&gt;”中设置的文件夹。

    所以请尝试在 MSBuild 命令行中删除参数 "/p:VisualStudioVersion" ,检查它是否适合您。

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

    【讨论】:

    • 这完美解决了这个问题。我的最终命令行以 msbuild myproject\myproject.vbproj /p:DeployOnBuild=true /p:PublishProfile=FolderProfile.pubxml /p:Configuration=Release 结束。这会将文件放入 bin\release\PublishOutput。谢谢
    • 这也解决了我的问题(除了使用正确的 msbuild)。对于以前版本的 VS,我曾经调用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe 并提供 /p:VisualStudioVersion 参数。现在有了 VS 2017 Community,我在没有 VisualStudioVersion 参数的情况下调用“C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe”,它可以工作
    • 这不负责 web.config 转换
    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 2017-11-06
    • 2018-05-26
    • 1970-01-01
    • 2018-07-18
    • 2017-09-25
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多