Nuget无法找到包的版本

时间:2016-08-03 03:47:39

标签: .net nuget

运行此命令

nuget.exe restore .\MySolution.sln

给出了这个错误:

Unable to find version '1.0.0' of package 'Microsoft.Net.Compilers'.

先前已经安装并恢复了软件包,但它已经以某种方式损坏了。

10 个答案:

答案 0 :(得分:44)

简单地通过

更新Nuget版本
nuget.exe update -self

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

答案 1 :(得分:11)

我遇到了同样的问题,但由于无法升级我们的构建服务器上安装的.NET Framework版本,我需要继续使用nuget.exe 2.8(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>

答案 2 :(得分:3)

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

dotnet nuget locals --clear all

之后,我能够成功还原我的软件包:

dotnet restore

答案 3 :(得分:2)

因为我最近偶然发现了这多次,所以这是我的解决方案:

  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>

答案 4 :(得分:2)

如果使用dotnet cli并基于this document,则可以将dotnet restore命令与某些选项一起使用,例如-f--no-cache和{{ 1}}:

--ignore-failed-sources

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

答案 5 :(得分:1)

在我们的案例中,我们将VS中的Nuget扩展从3.3.x升级到3.4.4。

您可以在工具菜单中找到更新 - &gt;扩展程序和更新 - &gt;更新 - &gt; Visual Studio Gallery。

答案 6 :(得分:1)

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

然后我发现在Solution Root Folder > 'packages' folder中有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文件,然后错误解决了。

答案 7 :(得分:1)

我遇到了同样的问题,但是您的所有回答都没有帮助我。 然后,我发现我的时钟被延迟了(那天更换了计算机),但我没有意识到这一点。

此简单的更正使其正常工作。 该软件包的版本确实存在,但是由于它被认为是在“未来”版本,因此Nuget给出了此错误,即找不到x.x.x版本。

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

答案 8 :(得分:1)

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

nuget restore -NoCache -NonInteractive

答案 9 :(得分:0)

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