“GetReferenceNearestTargetFrameworkTask”任务未找到。

77

我在VS 2017 Community中遇到自动补全的问题。

以前我用的是学校提供的VS 2017 Enterprise,但是该密钥已过期,所以我转而使用Community版本。

之前一切正常,但现在完全不起作用。

我在Stack Overflow上找到了一个解决方案(这里),但它不起作用,于是我在GitHub上找到了另一个解决方案(这里)

我得到了以下信息:

构建失败。

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1601,5): error MSB4036: “GetReferenceNearestTargetFrameworkTask”任务未找到。请检查以下内容: 1.) 项目文件中任务的名称与任务类的名称相同。 2.) 任务类是“public”的,并实现了Microsoft.Build.Framework.ITask接口。 3.) 任务在项目文件或位于“C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin”目录中的*.tasks文件中正确声明。 0个警告 1个错误

已用时间 00:00:00.11

您知道接下来该怎么做吗?


在你的问题顶部,你说自动完成功能无法正常工作。在底部,你又提到了错误。那么现在实际上发生了什么? - Programmer
错误来自:xxxxx_Compile_8f49089d.designtime.log,这是来自VS 2017的输出,由于日志中的错误,自动完成在VS中无法工作。 - LadIQe
如果您遇到此问题,请在 https://developercommunity.visualstudio.com/content/problem/137779/the-getreferencenearesttargetframeworktask-task-wa.html 上投票支持错误报告。 - Colonel Panic
6个回答

77

我遇到了相同的错误信息,但是出现原因不同。

我正在使用MSBuild自动化构建和部署Azure Functions。一切正常运作,直到我升级了Visual Studio 2017和Visual Studio Build Tools 2017,此时我开始收到这个错误信息。准确地说,只有在使用MSBuild时才会出现这个错误,在VS中手动构建项目没有问题。

对于我的情况,我已经按照@Programmer的答案进行了设置。但是由于我正在使用MSBuild,事实证明我还需要安装Visual Studio Build Tools中的NuGet targets和build tasks

Visual Studio Installer截图


4
这对我也有效,我也做了同样的事情,更新了Visual Studio Build Tools 2017。这是为了一个构建服务器,而且没有安装Visual Studio 2017本身。只需要重新运行构建工具安装程序并添加“NuGet targets and build tasks”组件即可。 - tjmoore
这是解决错误信息的实际方法。在大多数情况下,您可能已经从早期版本的Visual Studio或独立版(来自https://www.nuget.org/downloads,大约5 MB)安装了NuGet软件包管理器。还要注意的是,出于某些原因,选择“NuGet Package Manager”(如接受的答案所示)而不是“NuGet targets and build tasks”将尝试在磁盘上安装超过900 MB;我只能猜测它试图预安装一些常见的软件包 - 请问有人可以确认吗?“targets”选项仅为~13MB。 - MrCC
我正在使用Jenkins,配合从机Windows机器,在该机器上安装了MSbuild工具但没有VS。通过MSBuild工具的GUI安装程序,我已经安装了上述工具,并且一切都正常运行。 - ChristoD
我按照上面的指示安装了MSBuild工具,但是我在我指定的位置C:\BuildTools中没有看到nuget.exe。我在该文件夹中搜索了“nuget.exe”,但没有找到它。 - Rob Koch

72

按以下步骤修复该错误。这适用于 VS 2017:

解决方法1:

1.从此处安装Nuget PackageManager

2.重新启动 Visual Studio。


如果问题仍然存在,请继续以下操作

解决方法2:

1.再次下载并启动/运行 Visual Studio Installer

2.在 Visual Studio Installer 仍在运行时,转到“单独的组件”选项卡

3.选中位于“代码工具”选项下的“NuGet 包管理器”复选框。

4.单击安装以进行安装。

此位置的截图如下:

enter image description here

这应该会修复您在此问题中看到的错误。重新启动 Visual Studio 并测试自动完成功能。 如果它不起作用,请参见问题的答案,因为那是一个完全不同的问题。


2可能是最好的选择 :) - ccook

27

我在一个没有安装VisualStudio 2017,只有VS Build Tools的构建环境中遇到了使用msbuild 15.6.82的问题。

以下是一个PowerShell脚本,用于解决此问题。它基本上相当于在VS Installer中先前给出的答案,但是它不需要交互并且会等待完成。

Start-Process "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList 'modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools" --quiet --add Microsoft.VisualStudio.Component.NuGet.BuildTools --add Microsoft.Net.Component.4.5.TargetingPack --norestart --force' -Wait -PassThru


2
还可以下载 vs_BuildTools2017.exe,它可以作为各种选项的在线安装程序 - 例如,参见这个问题以了解如何使用它。 - Wai Ha Lee

18

我正在使用一台无头构建服务器在服务器核心上工作,通过安装 Chocolatey 包 choco install visualstudio2017-workload-webbuildtools 来解决此问题。您可以从此处获取该包:

https://chocolatey.org/packages?q=msbuild


3
这个答案更好,因为它既适用于本地安装,也适用于构建服务器。 - CubanX

1
我正在报告一位微软技术人员的答案。
这通常表示两种情况之一:
1. VS安装失败。如果是这种情况,建议对VS进行修复。
2. GAC中有msbuild程序集。如果是这种情况,请取消GAC中的安装。
Livar Cunha [MSFT]

0

我在Visual Studio 2019中遇到了同样的问题,通过安装Unity包简单解决了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接