构建开始突然失败
我们的解决方案包含针对.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天:-(