Visual studio 2013 自动包还原:找不到包的版本

Visual studio 2013 自动包还原:找不到包的版本,visual-studio-2013,nuget,nuget-package,nuget-server,nuget-package-restore,Visual Studio 2013,Nuget,Nuget Package,Nuget Server,Nuget Package Restore,我们正在使用改进的过程来恢复丢失的NuGet包 构建时,当开始从软件包源下载时,会弹出“还原”对话框,这是正确的: 我可以看到这些包正在被还原到packages文件夹中,但它并没有完成所有包的还原。我会遇到以下类型的错误: Error 10 NuGet Package restore failed for project MyProject: System.InvalidOperationException: Unable to find version '6.0.1' of packa

我们正在使用改进的过程来恢复丢失的NuGet包

构建时,当开始从软件包源下载时,会弹出“还原”对话框,这是正确的:

我可以看到这些包正在被还原到packages文件夹中,但它并没有完成所有包的还原。我会遇到以下类型的错误:

Error   10  NuGet Package restore failed for project MyProject: System.InvalidOperationException: Unable to find version '6.0.1' of package 'Newtonsoft.Json'.
   at NuGet.PackageHelper.ResolvePackage(IPackageRepository repository, String packageId, SemanticVersion version)
   at NuGet.VsEvents.PackageRestorer.RestorePackage(PackageReference package)
   at NuGet.VsEvents.PackageRestorer.RestorePackages(String packageReferenceFileFullPath, IFileSystem fileSystem)
   at NuGet.VsEvents.PackageRestorer.PackageRestore(ProjectPackageReferenceFile projectPackageReferenceFile).
这可能是因为我有多个包源吗?

例如,NuGet可能正在我们的私有包源代码中搜索“Newtonsoft.Json”,而不是在
NuGet.org
源代码中搜索

.nuget/nuget.config
文件:

<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="private" value="http://privatePackageSource.com/nuget" />
  </packageSources>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="private" value="http://privatePackageSource.com/nuget" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

但它并没有解决问题。

它确实被全局NuGet.config文件(C:\Users\UserName\AppData\Roaming\NuGet\NuGet.config)覆盖。重新启动Visual Studio似乎可以清除它。

由于某种原因,我的NuGet.config禁用了NuGet.org键。我检查了NuGet软件包管理器设置,一切正常。重新启动了VS2013,它成功了。以下是我的NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
  <solution>
   <add key="disableSourceControlIntegration" value="true" />
  </solution>
 <packageRestore>
  <add key="enabled" value="True" />
  <add key="automatic" value="True" />
 </packageRestore>
 <packageSources>
   <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
 </packageSources>
 <disabledPackageSources />
 <activePackageSource>
   <add key="Microsoft and .NET" value="https://www.nuget.org/api/v2/curated-feeds/microsoftdotnet/" />
 </activePackageSource>
</configuration>


也有相同的错误,在我的情况下,在构建之前使用nuget restore命令为我修复了它

您的全局nuget.config文件(C:\Users\UserName\AppData\Roaming\nuget\nuget.config)中有什么?如果您在其中定义了私有包源,但将其禁用,则它将覆盖解决方案的NuGet.config。先检查一下。如果是这样,您可以通过使用解决方案的NuGet.config文件中的元素来覆盖全局NuGet.config。它也在那里定义(我不知道如何定义),但未设置为禁用。如果在加载解决方案NuGet.config时更改设置,则NuGet会将包源保存到全局NuGet.config中。如果将其从全局NuGet.config中删除,则在“管理包”对话框中是否可以看到私有包源?@MattWard:全局NuGet.config确实是问题所在。这不是最新的。创建一个答案,我会奖励它-谢谢。