目前,当我运行我的项目时,它将执行我设置的构建后命令。然而,只有在项目发生变化时才是如此。我的最终目标是让我的项目在每次构建时都能运行。然而,我注意到的是,如果我在angular中更改HTML文件,项目不会检测到任何更改,因此它不会再次构建,因此它不会运行我的ng build命令。
有没有一种方法可以强制它总是运行构建后命令,或者使它总是重新构建,即使没有检测到任何更改?或许还有其他方法可以做到这一点?
这是一个. NETCoreWebApp,运行构建后事件的代码位于.csproj文件中
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="echo Building Angular App..." />
<Exec Command="cd ClientApp && ng build" />
</Target>
字符串
3条答案
按热度按时间rxztt3cl1#
有没有一种方法可以强制它总是运行构建后命令,或者使它总是重新构建,即使没有检测到任何更改?
DisableFastUpToDateCheck
设置为true,以禁用Visual Studio构建管理器的FastUpToDateCheck
:字符串
检查MSDN关于DisableFastUpToDateCheck:
一个布尔值,仅适用于VisualStudio。Visual Studio构建管理器使用一个名为FastUpToDateCheck的进程来确定是否必须重新构建项目才能保持最新。此过程比使用MSBuild确定这一点要快。通过将DisableFastUpToDateCheck属性设置为true,可以绕过Visual Studio生成管理器,并强制它使用MSBuild来确定项目是否为最新。
此外,如果您想分离构建和后期构建命令,您可以使用MSBuild命令行直接构建此项目,而无需添加上述设置。
希望这对你有帮助。
jyztefdp2#
您可以在.csproj文件中稍微不同地配置您的post build事件,并将
RunPostBuildEvent
设置为Always
,如下所示:字符串
**编辑:**正如我在多一点测试后发现的那样,
RunPostBuildEvent
的行为并不像我期望的那样。因此,“解决方法”是按照以下方式添加DisableFastUpToDateCheck
:型
MSDN:
一个布尔值,仅适用于VisualStudio。Visual Studio生成管理器使用一个名为FastUpToDateCheck的进程来确定是否必须重新生成项目才能保持最新。此过程比使用MSBuild确定这一点要快。通过将
DisableFastUpToDateCheck
属性设置为true
,可以绕过Visual Studio生成管理器,并强制它使用MSBuild来确定项目是否是最新的。显然,这样做的缺点是项目总是要重建的,所以这不是一个理想的解决方案。
s1ag04yj3#
我通过将以下属性添加到我的项目文件中解决了这个问题
字符串
有人把这个作为答案贴了出来,但由于某种原因被删除了,所以我重新贴出来,这样将来任何人都可以看到我是如何解决这个问题的。