针对 .Net 2.2 生成在 .Net Core 3.1 安装后失败,并显示"无法加载文件或程序集 NuGet.ProjectModel"



构建开始突然失败

我们的解决方案包含针对.Net Standard 2.0、.Net Core 2.2和.Net Framework 4.5的项目。很好的组合。它是用dotnet -c Release MyProject.sln建造的。

有一天,我们开始遭受以下错误的折磨,但只发生在我们的一个构建奴隶身上:

C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018: The "ResolvePackageAssets" task failed unexpectedly. [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018: System.IO.FileNotFoundException: Could not load file or assembly 'NuGet.ProjectModel, Version=5.4.0.2, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified. [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018: File name: 'NuGet.ProjectModel, Version=5.4.0.2, Culture=neutral, PublicKeyToken=31bf3856ad364e35' [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018:    at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheReader.CreateReaderFromMemory(ResolvePackageAssets task, Byte[] settingsHash) [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018:    at Microsoft.NET.Build.Tasks.ResolvePackageAssets.CacheReader..ctor(ResolvePackageAssets task) [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018:    at Microsoft.NET.Build.Tasks.ResolvePackageAssets.ReadItemGroups() [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018:    at Microsoft.NET.Build.Tasks.ResolvePackageAssets.ExecuteCore() [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018:    at Microsoft.NET.Build.Tasks.TaskBase.Execute() [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask) [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018:  [D:MyProjectMyProject.csproj]
C:Program Filesdotnetsdk3.1.101SdksMicrosoft.NET.SdktargetsMicrosoft.PackageDependencyResolution.targets(234,5): error MSB4018:  [D:MyProjectMyProject.csproj]

在从系统上安装.Net Core 3.1之后,我们在过去遇到过一些问题,但在global.json中指向2.2.100解决了这些问题。

现在,我们已经尝试解决在多个源中搜索Could not load file or assembly 'NuGet.ProjectModel...和类似内容的新问题,尝试了许多不同的解决方案和变通方法,以及.Net Core和Visual Studio Build Tools的更新和修复。运气不好。

最后,我们在dotnet build -c Release MyProject.sln -v diag:的输出中发现了一些奇怪的东西

MSBuildSDKsPath=C:Program Filesdotnetsdk3.1.101Sdks
MSBuildToolsPath=C:Program Filesdotnetsdk2.2.110

事实证明,我们在系统中设置了MSBuildSDKsPath变量,并指向SDK,这打破了global.json对SDK的降级。不知道,如果这是我的一些同事手动设置的,或者是在安装"什么东西"的过程中设置的,但它就在那里,吸走了我生命中的2天:-(

最新更新