Visual Studio 构建 njsproj Node.js 项目,即使自上次构建以来没有任何变化
Visual Studio builds njsproj Node.js project even though there are no changes since last build
我已将 空白 Node.js Web 应用程序 项目添加到我的解决方案中。它是其他 C# *.csproj 项目中的一个 *.njsproj。
该项目运行良好。 Visual Studio 构建根据 package.json 运行 npm run build
。只有一件事困扰着我。每次构建解决方案时都会构建 *.njsproj。
Visual Studio 可以识别 C# *.csproj 项目中何时 没有变化 并跳过它们说它们是最新的:
========== Build: 1 succeeded, 0 failed, 29 up-to-date, 0 skipped ==========
但是,这不适用于 *.njsproj。 npm run build
(从 Microsoft 中的 AfterCompile 目标引发。NodejsToolsV2.targets)每次都会执行,即使任何解决方案项目或文件完全没有变化。
Visual Studio 是否甚至能够跟踪 Node.js 项目的更改以跳过构建,或者没有机会让它像 C# 项目一样工作?
所有 Node.js 项目文件的构建操作都设置为 None。
我觉得不可能。这与 VS IDE 对此类 Node JS 项目的内部构建机制有关。它就是这样设计的。
我应该告诉你,最新检查是 VS IDE 的一项功能。你可以用c#项目试试VS IDE Build和MSBuild命令行build msbuild xxx\xxx.csproj -t:build
,你会发现那:
IDE build 将不会执行任何 msbuild 系统目标,并且它检测到不应再次构建,因为没有任何更改以最小化 MSBuild 的工作量。
但是,当你使用 msbuild 命令行时,即使没有任何变化,它仍然会调用许多系统默认目标,这会给大型解决方案带来负担。
所以 up-to-date
是 VS 的一个特性 IDE 这将有助于减轻 msbuild 的负担。
我们只能一个一个修改目标跳过inputs, outputs。但这是没有意义的,因为 up-to-date
是一种不依赖于 MSBuild 和 Targets 的新检测机制。没有msbuild函数获取node js项目下的up-to-date
那个是一个内部机制我们无法处理那个区域,你需要通过VSIDE菜单联系微软产品团队-->帮助-->发送反馈-->报告问题或that.
我已将 空白 Node.js Web 应用程序 项目添加到我的解决方案中。它是其他 C# *.csproj 项目中的一个 *.njsproj。
该项目运行良好。 Visual Studio 构建根据 package.json 运行 npm run build
。只有一件事困扰着我。每次构建解决方案时都会构建 *.njsproj。
Visual Studio 可以识别 C# *.csproj 项目中何时 没有变化 并跳过它们说它们是最新的:
========== Build: 1 succeeded, 0 failed, 29 up-to-date, 0 skipped ==========
但是,这不适用于 *.njsproj。 npm run build
(从 Microsoft 中的 AfterCompile 目标引发。NodejsToolsV2.targets)每次都会执行,即使任何解决方案项目或文件完全没有变化。
Visual Studio 是否甚至能够跟踪 Node.js 项目的更改以跳过构建,或者没有机会让它像 C# 项目一样工作?
所有 Node.js 项目文件的构建操作都设置为 None。
我觉得不可能。这与 VS IDE 对此类 Node JS 项目的内部构建机制有关。它就是这样设计的。
我应该告诉你,最新检查是 VS IDE 的一项功能。你可以用c#项目试试VS IDE Build和MSBuild命令行build msbuild xxx\xxx.csproj -t:build
,你会发现那:
IDE build 将不会执行任何 msbuild 系统目标,并且它检测到不应再次构建,因为没有任何更改以最小化 MSBuild 的工作量。
但是,当你使用 msbuild 命令行时,即使没有任何变化,它仍然会调用许多系统默认目标,这会给大型解决方案带来负担。
所以 up-to-date
是 VS 的一个特性 IDE 这将有助于减轻 msbuild 的负担。
我们只能一个一个修改目标跳过inputs, outputs。但这是没有意义的,因为 up-to-date
是一种不依赖于 MSBuild 和 Targets 的新检测机制。没有msbuild函数获取node js项目下的up-to-date
那个是一个内部机制我们无法处理那个区域,你需要通过VSIDE菜单联系微软产品团队-->帮助-->发送反馈-->报告问题或that.