簡體   English   中英

NuGet 找不到package的版本

[英]NuGet unable to find the version of a package

運行命令

nuget.exe restore .\MySolution.sln

給出此錯誤:

無法找到 package“Microsoft.Net.Compilers”的版本“1.0.0”。

其中 package 之前已安裝和恢復,但不知何故已損壞。

原來只是通過更新 NuGet 版本

nuget.exe update -self

從 2.8.0 更新到 3.4.4 就足夠了,並且該包現在可以正確恢復。

我能夠在macOS 上使用以下命令重置我的 NuGet 緩存/索引來解決這個問題:

dotnet nuget locals --clear all

之后我能夠成功恢復我的包:

dotnet restore

我遇到了同樣的問題,但我需要繼續使用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>

因為我最近多次偶然發現這個問題,這是我的解決方案:

  1. 轉到C:\\Users\\<User>\\AppData\\Roaming\\NuGet\\
  2. 打開NuGet.config
  3. <packageSources>添加<add key="keyName" value="path to repository"> <packageSources> 就我而言,它是一個指向\\\\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>

如果使用dotnet cli並基於此文檔,則可以使用帶有一些選項的dotnet restore命令,例如-f--no-cache--ignore-failed-sources

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

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

我面臨着同樣的問題,但你所有的答案都沒有幫助我。

然后,我發現我的時鍾延遲了(那天我換了電腦),我沒有意識到這一點。

這個簡單的修正使它一切正常。 包版本確實存在,但因為它被認為是“未來”,NuGet 給出了找不到版本 xxx 的錯誤。

我認為這是一個巨大的錯誤,因為它不在乎包裹的時間。 如果您有版本列表,則發布日期時間並不重要。

在我們的例子中,我們將 Visual Studio 中的 NuGet 擴展從 3.3.x 升級到 3.4.4。

您可以在菜單ToolsExtensions and UpdatesUpdatesVisual Studio Gallery 中找到更新。

就我而言,我已將 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文件,然后錯誤就解決了。

對我來說,解決問題的是在解決方案文件夾中運行以下命令:

nuget restore -NoCache -NonInteractive

我的問題是我將“包源”設置為我自己的特定 NuGet 服務器而不是全部。

清除 Nuget 緩存對我有用。

要從 Visual Studio 執行此操作,只需打開工具 -> 選項 -> Nuget 包管理器 -> 常規,然后單擊按鈕Clear All Nuget Cache(s)

Package Sources下,我不得不取消選中Machine Wide Packages: Microsoft and .NET

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM