简体   繁体   English

恢复 Nuget Package 缓存?

[英]Restoring Nuget Package Cache?

I deleted all of the packages in my global-packages cache, and now my projects are throwing lots of CS0012 for standard library constructs:我删除了全局包缓存中的所有包,现在我的项目正在为标准库构造抛出大量 CS0012:

error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
error CS0012: The type 'IDisposable' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.

I've run:我跑过:

  • dotnet restore in the solution and each project throwing the errors.解决方案中的dotnet restore和每个项目都抛出错误。
  • nuget restore in the solution and each project throwing errors. nuget restore在解决方案和每个项目中抛出错误。

My dotnet configuration:我的点网配置:

> dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   3.0.100
 Commit:    04339c3a26

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.19025
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.0.100\

Host (useful for support):
  Version: 3.0.0
  Commit:  7d57652f33

.NET Core SDKs installed:
  3.0.100 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Why did deleting the global-packages cache cause this problem and how do I recover from it?为什么删除全局包缓存会导致此问题,我该如何从中恢复?

Edit:编辑:

Here is the final.csproj which is throwing these errors:这是抛出这些错误的 final.csproj:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="GraphQL" Version="2.4.0" />
        <PackageReference Include="GraphQL-Parser" Version="4.1.1" />
        <PackageReference Include="dotNetRDF" Version="2.2.0" />
        <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
    </ItemGroup>

</Project>

This looks to be a known issue with versions of visual studio before 15.5 (or rather the associated msbuild).这似乎是 15.5 之前的 Visual Studio 版本(或更确切地说是相关的 msbuild)的一个已知问题
The summary is that you either need to upgrade to the latest version of VS2017 or use VS2019.总结就是要么需要升级到最新版本的VS2017,要么使用VS2019。
Alternatively, if you don't want to do that, it looks like inserting the following reference in all failing csproj files (or just your Directory.Build.Props to be safer) should do the trick:或者,如果您不想这样做,看起来像在所有失败的 csproj 文件中插入以下引用(或者只是您的 Directory.Build.Props 更安全)应该可以解决问题:

<ItemGroup>
    <Reference Include="netstandard" />
</ItemGroup>

Another suggested workaround is to use the target frameworks property rather than the singular version.另一个建议的解决方法是使用目标框架属性而不是单一版本。 Eg:例如:

<TargetFrameworks>netstandard2.0</TargetFrameworks>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM