我使用 Visual Studio 2022(MSBuild 版本 17?)创建了 razor Pages Web 应用程序,并将以下内容添加到 csproj 文件中:
<Target Name="BuildCss" BeforeTargets="Build"
Inputs="Pages/pages.css"
Outputs="wwwroot/css/styles.css">
<Copy SourceFiles="Pages/pages.css" DestinationFiles="wwwroot/css/styles.css" />
</Target>
我将在将 Pages/pages.css 文件复制到 wwwwroot/css 之前对其进行转换,但现在为了测试 MSBuild 的快速最新检查功能,我只需复制该文件。
现在,我第一次运行构建时,文件复制按预期成功,但之后即使我编辑pages.css文件甚至删除styles.css文件,它也不起作用。在输出窗口中我看到
========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
我在这里做错了什么?
我做了一个快速测试,可以在 VS2022 中重现相同的问题。然而,从这个文档DisableFastUpToDateCheck来看,它说
Visual Studio 构建管理器使用名为 FastUpToDateCheck 的过程来确定项目是否必须重新构建才能保持最新状态。此过程比使用 MSBuild 来确定这一点更快。将 DisableFastUpToDateCheck 属性设置为 true 可让您绕过 Visual Studio 生成管理器并强制它使用 MSBuild 来确定项目是否是最新的。
您可以在
DisableFastUpToDateCheck
文件中将属性 .csproj
设置为 true,以禁用 Visual Studio 构建管理器的 FastUpToDateCheck
:
<PropertyGroup>
<DisableFastUpToDateCheck>True</DisableFastUpToDateCheck>
</PropertyGroup>