繁体   English   中英

始终在Visual Studio 2017中运行post build事件命令

[英]Always run post build event commands in visual studio 2017

目前,当我运行我的项目时,它将执行我已经设置的后期构建命令。 但是,只有在项目发生变化时才会出现这种情况。 我的最终目标是让我的项目每次构建时运行构建。 但是,我注意到的是,如果我要以角度更改HTML文件,项目不会检测到任何更改,因此它不会再次构建,因此它不会运行我的ng build命令。

是否有办法强制它始终运行构建后命令或者可能使其始终重建,即使未检测到任何更改? 或者也许有另一种方法来实现这一目标?

这是一个.NET Core WebApp,运行我的post build事件的代码位于我的.csproj文件中

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="echo Building Angular App..." />
    <Exec Command="cd ClientApp &amp;&amp; ng build" />
</Target>

是否有办法强制它始终运行构建后命令或者可能使其始终重建,即使未检测到任何更改?

最简单的方法是在项目文件中将属性DisableFastUpToDateCheck设置为true,以禁用Visual Studio构建管理器的FastUpToDateCheck

<PropertyGroup>
    <DisableFastUpToDateCheck>True</DisableFastUpToDateCheck>
</PropertyGroup>

检查MSDN有关DisableFastUpToDateCheck的信息:

一个仅适用于Visual Studio的布尔值。 Visual Studio构建管理器使用名为FastUpToDateCheck的进程来确定是否必须重建项目以使其保持最新 此过程比使用MSBuild确定此过程更快。 将DisableFastUpToDateCheck属性设置为true可以绕过Visual Studio构建管理器并强制它使用MSBuild来确定项目是否是最新的。

此外 ,如果您想要一种将构建与构建后命令分开的方法,则可以使用MSBuild命令行直接构建此项目,而无需添加上述设置。

希望这可以帮助。

您可以在.csproj文件中稍微不同地配置post build事件,并将RunPostBuildEvent设置为Always ,如下所示:

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    ...
    <PostBuildEvent>cd ClientApp &amp;&amp; ng build</PostBuildEvent>
    <RunPostBuildEvent>Always</RunPostBuildEvent>
  </PropertyGroup>

编辑:正如我在经过多次测试后发现的RunPostBuildEventRunPostBuildEvent行为并不像我预期的那样。 因此,“解决方法”是按照以下方式添加DisableFastUpToDateCheck

<PropertyGroup>
  <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
  <PostBuildEvent>cd ClientApp &amp;&amp; ng build</PostBuildEvent>
</PropertyGroup>

来自MSDN

一个仅适用于Visual Studio的布尔值。 Visual Studio构建管理器使用名为FastUpToDateCheck的进程来确定是否必须重建项目以使其保持最新。 此过程比使用MSBuild确定此过程更快。 DisableFastUpToDateCheck属性设置为true可以绕过Visual Studio构建管理器并强制它使用MSBuild来确定项目是否是最新的。

显然,缺点是项目将永远重建,因此这不是一个理想的解决方案。

我通过将以下属性添加到我的项目文件中解决了这个问题

<RunPostBuildEvent>Always</RunPostBuildEvent> 
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>

有人把这个贴出来作为答案,但由于某种原因被删除所以我重新发布它所以今后出现的任何人都可以看到我是如何解决它的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM