【问题标题】:NuGet unable to find the version of a packageNuGet 找不到包的版本
【发布时间】:2016-12-08 14:40:12
【问题描述】:

运行命令

nuget.exe restore .\MySolution.sln

给出这个错误:

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

以前安装和恢复软件包的位置,但不知何故损坏了。

【问题讨论】:

    标签: .net nuget


    【解决方案1】:

    结果证明只是通过

    更新 NuGet 版本
    nuget.exe update -self
    

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

    【讨论】:

    • 就我而言,更新到 5.6.0 有帮助
    【解决方案2】:

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

    dotnet nuget locals --clear all
    

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

    dotnet restore
    

    【讨论】:

    • 在 Ubunutu 上也能很好地工作(使用 dotnet core 3.1)。
    【解决方案3】:

    我遇到了同样的问题,但我需要继续使用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>
    

    【讨论】:

    • 我使用的是自动 Mac 构建,就像你无法升级 nuget 这解决了我的错误。谢谢!
    【解决方案4】:

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

    1. 转到C:\Users\&lt;User&gt;\AppData\Roaming\NuGet\
    2. 打开NuGet.config
    3. &lt;packageSources&gt; 中添加&lt;add key="keyName" value="path to repository"&gt;。在我的情况下,它是一个指向\\JENKINS\nuGet Repository 的网络文件夹

    所以它应该看起来像这样:

    <?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>
    

    【讨论】:

    • 感谢这个
    【解决方案5】:

    如果使用dotnet cli并基于this document,您可以使用带有一些选项的dotnet restore命令,例如-f--no-cache--ignore-failed-sources

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

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

    【讨论】:

      【解决方案6】:

      我遇到了同样的问题,但你所有的答案都没有帮助我。

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

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

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

      【讨论】:

      • 我同意他们应该包含一些与错误情况相关的信息。不是那个版本下这个包不存在,而是它已经过时了!
      【解决方案7】:

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

      nuget restore -NoCache -NonInteractive
      

      【讨论】:

      • 解释是什么?为什么它有效?或者只是:它应该做什么?
      【解决方案8】:

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

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

      【讨论】:

        【解决方案9】:

        在我的情况下,我已将我的 NuGet 升级到最新版本,但仍然出现错误。

        然后我发现,在Solution Root Folder'packages'文件夹,里面有repositories.config,打开文件,你会看到所有@正在使用的987654322@:

        <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文件,然后错误就解决了。

        【讨论】:

          【解决方案10】:

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

          【讨论】:

          • "All" 是不是字面意思?
          • 是的,确实如此。
          【解决方案11】:

          清除 Nuget 缓存对我有用。

          要从 Visual Studio 执行此操作,只需打开 工具 -> 选项 -> Nuget 包管理器 -> 常规,然后单击按钮 Clear All Nuget Cache(s)

          【讨论】:

            猜你喜欢
            • 2020-07-25
            • 2020-10-05
            • 2020-04-01
            • 2018-03-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-02-08
            • 1970-01-01
            相关资源
            最近更新 更多