NuGet 无法找到包的版本

问题描述 投票:0回答:13

运行命令

nuget.exe restore .\MySolution.sln

给出了这个错误:

无法找到包“Microsoft.Net.Compilers”的版本“1.0.0”。

以前已安装并恢复该软件包,但不知何故已损坏。

.net nuget
13个回答
65
投票

结果只需通过

更新NuGet版本即可
nuget.exe update -self

从 2.8.0 更新到 3.4.4 就足够了,现在包可以正确恢复。


36
投票

我能够在 macOS 上使用以下命令重置我的 NuGet 缓存/索引来解决此问题:

dotnet nuget locals --clear all

之后我能够成功恢复我的包裹:

dotnet restore

18
投票

我也遇到了同样的问题,但我需要继续使用

nuget.exe
2.8,因为无法升级构建服务器上安装的 .NET Framework 版本(2.8 是仍然适用于 .NET 4.0 的最后一个版本)。

原因原来是

nuget.config
仅指向v3 API。解决方案是添加v2 API。例如,

<configuration>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="nuget v2" value="https://www.nuget.org/api/v2" />
  </packageSources>
</configuration>

10
投票

使用

dotnet cli
时,基于 dotnet 恢复文档,您可以使用带有一些选项的
dotnet restore
命令,例如
-f
--no-cache
--ignore-failed-sources

dotnet restore -f --no-cache --ignore-failed-sources

使用此命令,.NET Core 不会在缓存的包中搜索。


7
投票

因为我最近多次偶然发现这个问题,这是我的解决方案:

  1. 前往
    C:\Users\<User>\AppData\Roaming\NuGet\
  2. 打开
    NuGet.config
  3. <add key="keyName" value="path to repository">
    中添加
    <packageSources>
    。就我而言,它是一个指向
    \\JENKINS\nuGet Repository
  4. 的网络文件夹

所以它看起来应该与此类似:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
    <packageSources>
        <add key="local" value="\\JENKINS\nuGet Repository" />
        <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    </packageSources>
    <disabledPackageSources />
    <activePackageSource>
        <add key="All" value="(Aggregate source)" />
    </activePackageSource>
</configuration>

2
投票

就我而言,我已将 NuGet 升级到最新版本,但仍然收到错误。

然后我发现,在解决方案根文件夹'packages'文件夹,里面有

repositories.config
,打开文件,你会看到所有正在使用的
packages.config

<repository path="..\Common\Luna.Common\packages.config" />
<repository path="..\Common\Luna.ComponentBehaviors\packages.config" />
<repository path="..\Common\Luna.Data\packages.config" />
<repository path="..\Common\Luna.WPF.ApplicationFramework\packages.config" />
<repository path="..\GuyWire\Luna.Basic.GuyWire\packages.config" />

它正在存储信息

1.0.0

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Iesi.Collections" version="3.1.0.4000" targetFramework="net40" />
  <package id="log4net" version="2.0.3" targetFramework="net40" />
  <package id="NHibernate" version="1.0.0" targetFramework="net40" />
  <package id="uNhAddIns" version="1.0.0" targetFramework="net40" />
</packages>

因为实际上我是逐个文件引用DLL文件,所以我不需要通过NuGet来获取。我删除了

packages.config
文件,然后错误就解决了。


2
投票

我面临着同样的问题,但你所有的答案都没有帮助我。

然后,我发现我的时钟被延迟了(那天我换了电脑),而我并没有意识到这一点。

这个简单的修正就让它一切正常了。 该包版本确实存在,但因为它被认为是“未来”的,所以 NuGet 给出了此错误,无法找到版本 x.x.x。

我认为这是一个巨大的错误,因为它并不关心包裹是几点到的。如果您有版本列表,则发布日期时间并不重要。


2
投票

清除 Nuget 缓存对我有用。

要从 Visual Studio 中执行此操作,只需打开 Tools -> Options -> Nuget Package Manager -> General 并单击按钮

Clear All Nuget Cache(s)


1
投票

对我来说,解决问题的方法是在解决方案文件夹中运行以下命令:

nuget restore -NoCache -NonInteractive

1
投票

在我们的示例中,我们将 Visual Studio 中的 NuGet 扩展从 3.3.x 升级到 3.4.4。

您可以在菜单工具扩展和更新更新Visual Studio Gallery中找到更新。


1
投票

我的问题是我将“包源”设置为我自己的特定 NuGet 服务器而不是全部。


1
投票

包源下,我必须取消选中机器范围包:Microsoft 和 .NET


0
投票

我也遇到了类似的问题,而且已经困扰了好几天了, 就我而言,每当我想安装新的 Nuget 时 使用遇到“NuGet无法找到包的版本” 并且Package.config文件也不可见,当单击““显示所有文件”,然后转到那里的物理路径时,我找到了Package.config文件, 我重命名了 Package.config 文件,VS 2015 Nuget Package Manager SDK 中的错误消失了,并且能够安装新的包。

© www.soinside.com 2019 - 2024. All rights reserved.