运行命令
nuget.exe restore .\MySolution.sln
给出了这个错误:
无法找到包“Microsoft.Net.Compilers”的版本“1.0.0”。
以前已安装并恢复该软件包,但不知何故已损坏。
结果只需通过
更新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>
使用
dotnet cli
时,基于 dotnet 恢复文档,您可以使用带有一些选项的 dotnet restore
命令,例如 -f
、--no-cache
和 --ignore-failed-sources
:
dotnet restore -f --no-cache --ignore-failed-sources
使用此命令,.NET Core 不会在缓存的包中搜索。
因为我最近多次偶然发现这个问题,这是我的解决方案:
C:\Users\<User>\AppData\Roaming\NuGet\
NuGet.config
<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>
就我而言,我已将 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
文件,然后错误就解决了。
我面临着同样的问题,但你所有的答案都没有帮助我。
然后,我发现我的时钟被延迟了(那天我换了电脑),而我并没有意识到这一点。
这个简单的修正就让它一切正常了。 该包版本确实存在,但因为它被认为是“未来”的,所以 NuGet 给出了此错误,无法找到版本 x.x.x。
我认为这是一个巨大的错误,因为它并不关心包裹是几点到的。如果您有版本列表,则发布日期时间并不重要。
清除 Nuget 缓存对我有用。
要从 Visual Studio 中执行此操作,只需打开 Tools -> Options -> Nuget Package Manager -> General 并单击按钮
Clear All Nuget Cache(s)
对我来说,解决问题的方法是在解决方案文件夹中运行以下命令:
nuget restore -NoCache -NonInteractive
在我们的示例中,我们将 Visual Studio 中的 NuGet 扩展从 3.3.x 升级到 3.4.4。
您可以在菜单工具→扩展和更新→更新→Visual Studio Gallery中找到更新。
我的问题是我将“包源”设置为我自己的特定 NuGet 服务器而不是全部。
在包源下,我必须取消选中机器范围包:Microsoft 和 .NET
我也遇到了类似的问题,而且已经困扰了好几天了, 就我而言,每当我想安装新的 Nuget 时 使用遇到“NuGet无法找到包的版本” 并且Package.config文件也不可见,当单击““显示所有文件”,然后转到那里的物理路径时,我找到了Package.config文件, 我重命名了 Package.config 文件,VS 2015 Nuget Package Manager SDK 中的错误消失了,并且能够安装新的包。