始终在Visual Studio 2017中运行后期生成事件命令

tuwxkamq  于 2023-08-07  发布在  其他
关注(0)|答案(3)|浏览(141)

目前,当我运行我的项目时,它将执行我设置的构建后命令。然而,只有在项目发生变化时才是如此。我的最终目标是让我的项目在每次构建时都能运行。然而,我注意到的是,如果我在angular中更改HTML文件,项目不会检测到任何更改,因此它不会再次构建,因此它不会运行我的ng build命令。
有没有一种方法可以强制它总是运行构建后命令,或者使它总是重新构建,即使没有检测到任何更改?或许还有其他方法可以做到这一点?
这是一个. NETCoreWebApp,运行构建后事件的代码位于.csproj文件中

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

字符串

rxztt3cl

rxztt3cl1#

有没有一种方法可以强制它总是运行构建后命令,或者使它总是重新构建,即使没有检测到任何更改?

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

字符串
检查MSDN关于DisableFastUpToDateCheck:
一个布尔值,仅适用于VisualStudio。Visual Studio构建管理器使用一个名为FastUpToDateCheck的进程来确定是否必须重新构建项目才能保持最新。此过程比使用MSBuild确定这一点要快。通过将DisableFastUpToDateCheck属性设置为true,可以绕过Visual Studio生成管理器,并强制它使用MSBuild来确定项目是否为最新。

此外,如果您想分离构建和后期构建命令,您可以使用MSBuild命令行直接构建此项目,而无需添加上述设置。

希望这对你有帮助。

jyztefdp

jyztefdp2#

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

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

字符串

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

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


MSDN
一个布尔值,仅适用于VisualStudio。Visual Studio生成管理器使用一个名为FastUpToDateCheck的进程来确定是否必须重新生成项目才能保持最新。此过程比使用MSBuild确定这一点要快。通过将DisableFastUpToDateCheck属性设置为true,可以绕过Visual Studio生成管理器,并强制它使用MSBuild来确定项目是否是最新的。
显然,这样做的缺点是项目总是要重建的,所以这不是一个理想的解决方案。

s1ag04yj

s1ag04yj3#

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

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

字符串
有人把这个作为答案贴了出来,但由于某种原因被删除了,所以我重新贴出来,这样将来任何人都可以看到我是如何解决这个问题的。

相关问题