Visual Studio 2017:Nuget 找不到包,构建项目时出错

Visual Studio 2017: Nuget cannot find packages, gives error when building project

我使用的是 VS 2017 版本 15.9.38。我最近在构建旧项目时开始遇到错误。这是一个具有 Angular 应用程序的 Web 项目。错误是:

Package Microsoft.AspNetCore.DataProtection, version 2.1.1 was not found. It might have been deleted since NuGet restore. Otherwise, NuGet restore might have only partially completed, which might have been due to maximum path length restrictions.

此错误位于名为:C:\Program Files\dotnet\sdk.1.526\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets 的文件中的一行:

<ResolvePackageAssets 
  ProjectAssetsFile="$(ProjectAssetsFile)"
  ProjectAssetsCacheFile="$(ProjectAssetsCacheFile)"
  ProjectPath="$(MSBuildProjectFullPath)"
  ProjectLanguage="$(Language)"
  EmitAssetsLogMessages="$(EmitAssetsLogMessages)"
  TargetFrameworkMoniker="$(NuGetTargetMoniker)"
  RuntimeIdentifier="$(RuntimeIdentifier)"
  MarkPackageReferencesAsExternallyResolved="$(MarkPackageReferencesAsExternallyResolved)"
  DisablePackageAssetsCache="$(DisablePackageAssetsCache)"
  DisableFrameworkAssemblies="$(DisableLockFileFrameworks)"
  DisableTransitiveProjectReferences="$(DisableTransitiveProjectReferences)"
  EnsureRuntimePackageDependencies="$(EnsureRuntimePackageDependencies)"
  VerifyMatchingImplicitPackageVersion="$(VerifyMatchingImplicitPackageVersion)"
  ExpectedPlatformPackages="@(ExpectedPlatformPackages)"      
  >

我的项目不像我的一些项目那样有 packages.config 文件或包子文件夹。

在我的项目 csproj 文件中,有一段写着:

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
    <PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="2.1.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
  </ItemGroup>

另一种我可以看到错误的方法是在解决方案资源管理器中,在 Dependencies/Nuget 节点下,所有包都有一个带感叹号的黄色三角形。以下是我尝试过的所有方法:

在 VS 选项中,对于 Nuget,这些已被选中(我也尝试取消选中它们以进行良好测量):

清除 Nuget 缓存

清理并重建项目

正在重启 VS

正在重启计算机

正在删除此文件夹:c:\users\my_username.nuget

我尝试使用 Nuget 包管理器将一些包更新到较新的版本,但出现此错误:

C:\Program Files\dotnet\sdk.1.526\NuGet.targets(114,5): error : An error occurred while retrieving package metadata for 'System.IO.Compression.ZipFile.4.3.0' from source 'C:\Program Files\dotnet\sdk\NuGetFallbackFolder'. C:\Program Files\dotnet\sdk.1.526\NuGet.targets(114,5): error : Nuspec file does not exist in package.

我将这个新错误称为 ERROR B。

我尝试删除所有包,然后使用 Nuget 包管理器重新安装它们,但出现错误 B。

我在 VS 中打开了 nuget 包管理器控制台,运行 这个:

Update-Package -Reinstall

并得到了这样的回应:

No package updates are available from the current package source for project 'whatever'.

我在控制台中 运行 得到错误 B:

Update-Package

我打开了一个命令提示符(不是在 VS 中)并尝试 运行 一些事情。但是每当我 运行 他们时,我都会得到错误 B。这些是我尝试过的事情:

dotnet restore --force-evaluate

dotnet restore

dotnet build

dotnet nuget locals --clear all

我尝试重新安装 SDK 2.1.526,但没有帮助。

我看到有人建议您可以重新安装或更新 Nuget,但我不知道该怎么做。例如,当我按照这些步骤操作时,Nuget 和包管理器不可用。我在要卸载的扩展程序中查找它们,但它们不存在。

  1. 在 Visual Studio 中,从“工具”菜单中选择“扩展和更新”选项。
  2. 在出现的对话框中,展开左侧树中的“更新”节点。
  3. Select 树中的“Visual Studio 画廊”选项。
  4. 最后,在对话框右侧的更新列表中查找包管理器更新,然后单击旁边的“更新”按钮。

我尝试下载 CLI nuget.exe 并 运行 宁此,但仍然得到错误 B:

nuget restore whatever.sln

我尝试 运行在命令行 window 中使用管理员权限执行所有这些命令,但没有帮助。

还有什么我可以尝试的吗? 提前致谢

关注你所谓的“错误 B”:

C:\Program Files\dotnet\sdk.1.526\NuGet.targets(114,5): error : An error occurred while retrieving package metadata for 'System.IO.Compression.ZipFile.4.3.0' from source 'C:\Program Files\dotnet\sdk\NuGetFallbackFolder'. C:\Program Files\dotnet\sdk.1.526\NuGet.targets(114,5): error : Nuspec file does not exist in package

您的 C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.io.compression.zipfile.3.0 文件夹中实际上有一个 .nuspec 文件吗?

我有一个,它的内容是有效的XML:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata minClientVersion="2.12">
    <id>System.IO.Compression.ZipFile</id>
    <version>4.3.0</version>
    <title>System.IO.Compression.ZipFile</title>
    <authors>Microsoft</authors>
    <owners>microsoft,dotnetframework</owners>
    <requireLicenseAcceptance>true</requireLicenseAcceptance>
    <licenseUrl>http://go.microsoft.com/fwlink/?LinkId=329770</licenseUrl>
    <projectUrl>https://dot.net/</projectUrl>
    <iconUrl>http://go.microsoft.com/fwlink/?LinkID=288859</iconUrl>
    <description>Provides classes that support the compression and decompression of streams using file system paths.

Commonly Used Types:
System.IO.Compression.ZipFile
 
When using NuGet 3.x this package requires at least version 3.4.</description>
    <releaseNotes>https://go.microsoft.com/fwlink/?LinkID=799421</releaseNotes>
    <copyright>© Microsoft Corporation.  All rights reserved.</copyright>
    <serviceable>true</serviceable>
    <dependencies>
      <group targetFramework="MonoAndroid1.0" />
      <group targetFramework="MonoTouch1.0" />
      <group targetFramework=".NETFramework4.6" />
      <group targetFramework=".NETStandard1.3">
        <dependency id="System.Buffers" version="4.3.0" exclude="Compile" />
        <dependency id="System.IO" version="4.3.0" exclude="Compile" />
        <dependency id="System.IO.Compression" version="4.3.0" />
        <dependency id="System.IO.FileSystem" version="4.3.0" exclude="Compile" />
        <dependency id="System.IO.FileSystem.Primitives" version="4.3.0" exclude="Compile" />
        <dependency id="System.Resources.ResourceManager" version="4.3.0" exclude="Compile" />
        <dependency id="System.Runtime" version="4.3.0" />
        <dependency id="System.Runtime.Extensions" version="4.3.0" exclude="Compile" />
        <dependency id="System.Text.Encoding" version="4.3.0" />
      </group>
      <group targetFramework="Xamarin.iOS1.0" />
      <group targetFramework="Xamarin.Mac2.0" />
      <group targetFramework="Xamarin.TVOS1.0" />
      <group targetFramework="Xamarin.WatchOS1.0" />
    </dependencies>
    <frameworkAssemblies>
      <frameworkAssembly assemblyName="mscorlib" targetFramework=".NETFramework4.6" />
      <frameworkAssembly assemblyName="System.IO.Compression.FileSystem" targetFramework=".NETFramework4.6" />
    </frameworkAssemblies>
  </metadata>
</package>

如果该文件丢失或损坏,它可以解释您遇到的问题。您可以尝试重命名 System.IO.Compression.ZipFile 文件夹并尝试再次恢复您的项目。

你也可以试试这个命令吗:

nuget.exe locals all -clear