[英]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>
因為我最近多次偶然發現這個問題,這是我的解決方案:
C:\\Users\\<User>\\AppData\\Roaming\\NuGet\\
NuGet.config
<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。
您可以在菜單Tools → Extensions and Updates → Updates → Visual 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.