【问题标题】:DeployOnBuild not taking effect when building web app in Visual Studio 2017在 Visual Studio 2017 中构建 Web 应用程序时,DeployOnBuild 未生效
【发布时间】:2017-09-29 15:02:42
【问题描述】:

我在 VS 2017 中有一个 Web 应用程序,我为它定义了一个发布配置文件,该配置文件可以愉快地将网站部署/发布到文件系统上的某个位置。

我知道这可以作为常规构建过程的一部分,即仅在 Visual Studio 或 TFS 构建中构建解决方案 - 并且可以通过如下部分来实现:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <DeployOnBuild>True</DeployOnBuild>    
    <PublishProfile>ProfileName</PublishProfile>
</PropertyGroup>

但是,这没有任何影响,构建输出日志只显示正在发生的常规构建,并且没有尝试发布。

是否应该按照此处和 MSDN 上的各种答案中的建议工作 - 如果是这样,上述内容有什么问题?

(如果有人想知道,这样做的原因是 TFS 构建的单个解决方案无法根据构建定义 MSBuildArguments 设置的要求单独发布 > 1 个具有单独发布配置文件的 Web 应用程序)。

【问题讨论】:

    标签: asp.net visual-studio tfs msbuild


    【解决方案1】:

    我想感谢@Andy-MSFT,他发布了一个非常接近的答案,但最终缺少一些重要的细节,并且需要进行一些更正才能使其正常工作。

    首先,可行的解决方案是:

    <Target Name="Deploy" AfterTargets="Build">
        <MSBuild
          Condition="'$(DeployOnBuild)'!='true' And '$(Configuration)|$(Platform)' == 'Release|AnyCPU'"
          Projects="$(ProjectPath)"
          Targets="WebPublish"
          Properties="DeployOnBuild=true;PublishProfile=FolderProfile"/>
    </Target>
    

    如果安装了 Visual Studio 的“Web 开发人员工具”(在我的情况下为 2017,根据问题),WebPublish 目标将仅在 TFS 构建服务器上工作。请注意,“Projects”属性必须使用 $(ProjectPath) 设置,这也与 Andy 的答案不同,并且它也需要它才能工作。

    【讨论】:

      【解决方案2】:

      在项目文件中静态设置时,DeployOnBuild 属性特别被忽略。显然,这是一个必须在命令行上全局设置的特殊属性。

      作为一种解决方法,您可以再次调用 MSBuild 以传递该属性。见How to: Extend the Visual Studio Build Process

      1. 使用文本编辑器打开.csproj 文件。
      2. 最后在sn-p下面添加,然后保存。

        <Target Name="AfterBuild"> <MSBuild Condition="'$(DeployOnBuild)'!='true'" Projects="$(MSBuildProjectFullPath)" Properties="DeployOnBuild=true;PublishProfile=YourPublishProfile;BuildingInsideVisualStudio=False"/> </Target>

      以下主题供您参考:

      【讨论】:

      • 谢谢,看起来不错的方法 - 试试看吧。
      • @JamesHarcourt 您是否通过解决方法解决了问题?它对你有用吗?
      • 它没有用,但在做了一些修改后它确实有效,我会在你让我走上正确的道路时投赞成票,但我会在有时间时发布最终答案。
      猜你喜欢
      • 2018-05-10
      • 2020-05-31
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      相关资源
      最近更新 更多