"GenerateDepsFile"任务意外失败。

46
我试图在MonoDevelop中编译我的新应用程序,但是出现了以下错误:
/usr/share/dotnet/sdk/2.2.203/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(5,5): 错误 MSB4018: “GenerateDepsFile”任务意外失败。 System.TypeLoadException:无法加载“Microsoft.NET.Build.Tasks.DependencyContextBuilder:_filteredPackages”字段的类型 (12)原因是:无法从typeref中解析类型标记01000027的类型 (程序集'NuGet.Packaging,Version=5.0.0.6,Culture=neutral,PublicKeyToken=31bf3856ad364e35'中预期类'NuGet.Packaging.Core.PackageIdentity')程序集:NuGet.Packaging, Version=5.0.0.6,Culture=neutral,PublicKeyToken=31bf3856ad364e35类型:NuGet.Packaging.Core.PackageIdentity成员:(null) Microsoft.NET.Build.Tasks.TaskBase.Execute() [0x00000] in :0 at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () [0x00029] in <58f0218f988743a48dd7c84cbe933f4e>:0 at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) [0x001f6] in <58f0218f988743a48dd7c84cbe933f4e>:0 (MSB4018)(passcracker)我无法编译任何应用程序,请帮忙。
14个回答

96

我使用.Net Standard 2.1时遇到了同样的问题,我通过清理解决方案,然后进行重建来解决问题。


3
我从 C:\Users\YourUserName.nuget\packages 中删除了所有现有的包。请注意 "nuget" 前面有一个点。尝试重新构建,它可以工作。 - Vikram Singh Saini
1
@code_disciple 让我笑了,谢谢!说真的,清理并重新构建对我很有帮助。 - Ben Power

21

我刚刚将我的项目从一台新机器上复制过来(而不是从GIT拉取),然后遇到了这个问题。在每个项目中删除binobj文件夹可以解决此问题。


2
在我的vs2019 .net core 3.1中有效。 - TabsNotSpaces
1
你可以在此之后对解决方案运行“还原NUGET包”,方法是右键单击解决方案并选择该命令,或通过CLI运行:nuget restore MySolution.sln - Matt

5
你使用的 Mono MSBuild 和 .NET Core SDK 版本不兼容,因为它们使用了不同版本的内部 NuGet 库。要解决此问题,你可以:
  • 降级 .NET Core SDK 到 2.1.5xx 或者 2.2.1xx(例如2.1.505或者2.2.108)
  • 升级 Mono 到 6.0
你可以在这里找到有关此问题及可能解决方案的详细说明: https://rider-support.jetbrains.com/hc/en-us/articles/360004180039

3

这似乎是一个已知问题

在目前阶段,唯一的解决方案似乎是降级到.NET Core v2.2.105。

如何降级:

  • 卸载最新的.NET Core版本(v2.2.2+)。
  • 下载并安装v2.2.105。

只是为了其他人能够找到这篇文章,我正在使用VS for Mac 7.7.4,我不得不手动从'/usr/local/share/dotnet/sdk'中删除dotnet sdk,并从上面提供的链接安装v2.2.107(x64)。这个版本是唯一一个没有给我抛出任何错误的版本。 - Ahs N
将此添加到仍然失败的列表中:/usr/share/dotnet/sdk/2.2.300/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets(5,5):错误 MSB4018:任务“GenerateDepsFile”意外失败。 - granadaCoder
1
Ubuntu 18.04安装2.2.105链接:https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-04/sdk-2.2.105 - granadaCoder
1
使用了那个微软链接后,“install”命令行失败了(我仍然需要在文章中列出的设置命令)。但是这个命令最终起作用了:sudo apt install dotnet-sdk-2.2=2.2.105-1。 - granadaCoder

2
我遇到了这个错误,读了评论后,通过合并评论解决了问题 - 首先删除了bin文件夹、obj文件夹,执行了清理命令,删除了enter image description here,然后重新构建。

您的回答可以通过添加更多支持信息来改进。请[编辑]以添加进一步的细节,例如引用或文档,以便他人可以确认您的回答是否正确。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community
@社区 这是一个相当愚蠢的评论,他们包含了一张由于声望低于50而无法显示的图片,现在你们说要编辑它让它变得更好?!! - Jeremy Thompson
@社区 这个评论太愚蠢了,他们包含了一张图片,但由于声望不足50,图片无法显示。现在你还要求他们编辑以改进?!! - undefined

1
我在将项目从.Net Framework 4.5迁移到.NET 6.0时遇到了同样的问题(有70个项目)。
以上所有答案都是正确的,但对我的问题来说不够。我使用了以下答案:
删除binobj.vs文件夹,然后清理项目并重新构建项目。它可以在Build模式下工作,但在Rebuild模式下无效。问题仍然存在。
我更新了SDKVersion,但这还不够,问题仍然存在。
我发现了这个问题:
在派生类中存在相同名称(或类似名称)的duplicate property(或变量)。
这是一个很好的解决方案,解决了一些问题。
最终(经过3天的努力),我发现最大的问题是我有Loop References
我修复了项目中的Loop References,错误得到了解决。

你能解释一下你是如何发现循环引用是你的问题的吗? - iwantwin
@iwantwin,这很有趣,但也是事实,通过试错来实现。 - AminRostami

1
*.sln文件夹中运行以下CMD命令。这将自动删除所有OBJ和BIN文件夹。然后您的问题将得到解决。
FOR /d /r . %%d in (bin,obj) DO ( IF EXIST "%%d" ( ECHO %%d | FIND /I "\node_modules\" > Nul && ( ECHO.Skipping: %%d ) || ( ECHO.Deleting: %%d rd /s/q "%%d" )))

1

我遇到了这个错误,解决方法是在.csproj文件中更正包版本号。

   <Version>2.0.7.</Version> <!--casued the error-->

   <Version>2.0.7</Version> <!--this fixed the error-->

去掉末尾的 '.' 对我来说解决了这个问题。


0

更改文件名。例如,添加前缀_或#;这样,它就不能使用。

重新启动Visual Studio,然后尝试构建。如果问题仍然存在,则需要重新启动计算机。


0

我有一个基于 .net standard 2.0 构建的项目。昨天,我将我的 Visual Studio 2019 更新到了 16.3.0 版本,以便利用 .Net Core 3.0。但突然间,针对标准 2.0 的项目构建开始抛出“GenerateDepsFile”任务意外失败的错误。

我通过将目标框架更改为 2.1 来解决了这个问题。


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