【发布时间】:2024-01-14 13:51:01
【问题描述】:
最近,我尝试从多目标 .NET Core 3.0 项目中删除对 .NET Framework 目标的支持(最初支持的目标:netfx472、netcoreapp3.0 和 netstandard2.1)。该项目使用以 netfx472 和 netcoreapp3.0 为目标的自定义 MSBuild 任务,并根据构建的目标进行加载。
在尝试删除 .NET Framework 目标支持时,我已删除所有 netfx 目标并删除了对使用 MSBuild netfx 目标构建的自定义任务的依赖。我现在面临的问题是,尽管能够从命令行为 .netcoreapp3.0 和 netstandard2.1 目标构建项目,但任何使用 Visual Studio 16.3.4 或更高版本或 16.4.2 预览构建它的尝试都失败了,原因是无法加载自定义 MSBuild 任务。这样做的副作用是 Visual Studio 不支持未正确构建的项目中的详细 IntelliSense(IntelliSense 被简化为仅支持类型和局部变量的基本形式 - 不支持更复杂的功能:成员选择,表达式或语句语法助手。此外,代码修复停止工作。)
问题似乎在于 Visual Studio 使用了针对 MSBuild 发行版的 netfx,它是 Visual Studio 附带的,而不是针对 MSBuild 发行版的 .NET Core,这会阻止在 VS 启动构建期间加载针对 .netcoreapp3.0 的 MSBuild 自定义任务程序集.
我在dotnet/project-system 项目的以下问题VS 2019 v16.3.4 and v16.4.prev2 are unable to build netcoreapp3.0 projects which use custom MSBuild tools targeting netcoreapp3.0 中失败了,但是,我们将不胜感激任何解决方法的建议,因为它会解除对我的工作的阻碍。
【问题讨论】:
-
嗨,你的意思是 msbuild 任务是什么?我知道 msbuild 支持实现 Itask 接口或从 Task 类派生的自定义任务,但我不确定它是否是同一个......您能否分享一个最小的、可重现的示例来帮助我们重现该问题?排除故障会有很大帮助:)
-
我正在开发的库如下:github.com/DjvuNet/DjvuNet。使用的 MSBuild 自定义任务是 github.com/DjvuNet/DjvuNet/tree/master/build/tools/…
-
虽然这不是官方支持的,但我认为检查此问题是否可重现的一种简单方法是创建一个简单的 .net core 3.0 自定义任务程序集并在新的 .net core 项目中使用它。不知何故,我在测试过程中遇到了构建问题:(所以我没有成功进行该测试,如果我有任何更新,我会回来..
标签: msbuild intellisense visual-studio-2019 msbuild-task .net-core-3.0