nuget restore 无法从本地存储库恢复包
nuget restore is unable to restore packages from local repository
从全局 nuget 存储库恢复
我有这个 packages.config-文件:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="jQuery" version="3.1.1" targetFramework="net46" />
<package id="NLog" version="4.3.10" targetFramework="net46" />
</packages>
用这个命令我可以恢复上面列出的 nuget-packages packages.config:
nuget restore packages.config -PackagesDirectory NuGetPackages -NoCache
效果很好。
此示例的所有文件都可以在这里找到:
https://github.com/ezeh2/nuget_restore_examples/tree/master/nuget_with_global_nuget_repository
从本地 nuget 存储库恢复
在我的公司,我们必须使用位于网络共享上的存储库。
而且我们不允许从标准的全局 nuget-repository 进行包恢复。
出于演示目的,我们假设本地包存储库位于目录 NuGetPackagesSource
中
这是它的内容:
-NuGetPackagesSource
|-jquery
|-3.1.1
|-jquery.3.1.1.nupkg
|-jquery.3.1.1.nupkg.sha512
|-jquery.nuspec
|-nlog.4.3.10.nupkg
通过这个 NuGet.Config 我们确保使用本地包存储库而不是全局包存储库:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<disabledPackageSources>
<add key="nuget.org" value="true" />
</disabledPackageSources>
<packageSources>
<add key="my" value="NuGetPackagesSource" />
</packageSources>
</configuration>
以下从本地目录进行恢复 NuGetPackagesSource
:
nuget restore packages.config -ConfigFile NuGet.config -PackagesDirectory NuGetPackages -NoCache
很遗憾,出现以下错误:
WARNING: Unable to find version '3.1.1' of package 'jQuery'.
C:\software_download\nuget\NuGetPackagesSource: Package 'jQuery.3.1.1' is not found on source 'C:\software_download\nuget\NuGetPackagesSource'.
Adding package 'NLog.4.3.10' to folder 'C:\software_download\nuget\NuGetPackages'
Added package 'NLog.4.3.10' to folder 'C:\software_download\nuget\NuGetPackages'
Errors in packages.config projects
Unable to find version '3.1.1' of package 'jQuery'.
C:\software_download\nuget\NuGetPackagesSource: Package 'jQuery.3.1.1' is not found on source 'C:\software_download\nuget\NuGetPackagesSource'.
从报错包中可以看出jquery无法恢复。但是包 NLog 已成功恢复。我没有解释
这种行为的原因是包 jquery
和 NLog
都在本地包存储库中。
此示例的所有文件都可以在这里找到:
https://github.com/ezeh2/nuget_restore_examples/tree/master/nuget_with_local_nuget_repository
仔细查看您的包存储库。 NLog
包直接在 NuGetPackagesSource
下面
而 jquery-package
在路径 jquery/3.1.1/jquery.3.1.1.nupkg
中。您使用不同的文件夹结构
软件包 NLog
和 Jquery
。如果 nuget 在 NuGetPackagesSource
正下方看到一个 nupkg 文件,它假定
所有 nupkg 文件都在同一级别,它不会在 NuGetPackagesSource
下的文件夹中搜索。这个
这就是为什么出现错误 Unable to find version '3.1.1' of package 'jQuery'
,即使 jquery
-package 在那里。
如何解决这个问题
删除你的 NuGetPackagesSource
文件夹并使用 nuget install
从头开始新建它,如下所示:
nuget install jQuery
-Version 3.3.1 -OutputDirectory NuGetPackagesSource
nuget install NLog
-Version 4.3.10 -OutputDirectory NuGetPackagesSource
备选方案
将所有 nupkg 文件直接放在 NuGetPackagesSource 下,不要使用
nuget install
完全没有。但这只适用于没有额外文件夹的简单包。不幸的是,NLog
和 JQuery
.
无法做到这一点
从全局 nuget 存储库恢复
我有这个 packages.config-文件:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="jQuery" version="3.1.1" targetFramework="net46" />
<package id="NLog" version="4.3.10" targetFramework="net46" />
</packages>
用这个命令我可以恢复上面列出的 nuget-packages packages.config:
nuget restore packages.config -PackagesDirectory NuGetPackages -NoCache
效果很好。
此示例的所有文件都可以在这里找到: https://github.com/ezeh2/nuget_restore_examples/tree/master/nuget_with_global_nuget_repository
从本地 nuget 存储库恢复
在我的公司,我们必须使用位于网络共享上的存储库。 而且我们不允许从标准的全局 nuget-repository 进行包恢复。
出于演示目的,我们假设本地包存储库位于目录 NuGetPackagesSource
中
这是它的内容:
-NuGetPackagesSource
|-jquery
|-3.1.1
|-jquery.3.1.1.nupkg
|-jquery.3.1.1.nupkg.sha512
|-jquery.nuspec
|-nlog.4.3.10.nupkg
通过这个 NuGet.Config 我们确保使用本地包存储库而不是全局包存储库:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<disabledPackageSources>
<add key="nuget.org" value="true" />
</disabledPackageSources>
<packageSources>
<add key="my" value="NuGetPackagesSource" />
</packageSources>
</configuration>
以下从本地目录进行恢复 NuGetPackagesSource
:
nuget restore packages.config -ConfigFile NuGet.config -PackagesDirectory NuGetPackages -NoCache
很遗憾,出现以下错误:
WARNING: Unable to find version '3.1.1' of package 'jQuery'. C:\software_download\nuget\NuGetPackagesSource: Package 'jQuery.3.1.1' is not found on source 'C:\software_download\nuget\NuGetPackagesSource'.
Adding package 'NLog.4.3.10' to folder 'C:\software_download\nuget\NuGetPackages' Added package 'NLog.4.3.10' to folder 'C:\software_download\nuget\NuGetPackages'
Errors in packages.config projects Unable to find version '3.1.1' of package 'jQuery'. C:\software_download\nuget\NuGetPackagesSource: Package 'jQuery.3.1.1' is not found on source 'C:\software_download\nuget\NuGetPackagesSource'.
从报错包中可以看出jquery无法恢复。但是包 NLog 已成功恢复。我没有解释
这种行为的原因是包 jquery
和 NLog
都在本地包存储库中。
此示例的所有文件都可以在这里找到: https://github.com/ezeh2/nuget_restore_examples/tree/master/nuget_with_local_nuget_repository
仔细查看您的包存储库。 NLog
包直接在 NuGetPackagesSource
下面
而 jquery-package
在路径 jquery/3.1.1/jquery.3.1.1.nupkg
中。您使用不同的文件夹结构
软件包 NLog
和 Jquery
。如果 nuget 在 NuGetPackagesSource
正下方看到一个 nupkg 文件,它假定
所有 nupkg 文件都在同一级别,它不会在 NuGetPackagesSource
下的文件夹中搜索。这个
这就是为什么出现错误 Unable to find version '3.1.1' of package 'jQuery'
,即使 jquery
-package 在那里。
如何解决这个问题
删除你的 NuGetPackagesSource
文件夹并使用 nuget install
从头开始新建它,如下所示:
nuget install
jQuery
-Version 3.3.1 -OutputDirectory NuGetPackagesSourcenuget install
NLog
-Version 4.3.10 -OutputDirectory NuGetPackagesSource
备选方案
将所有 nupkg 文件直接放在 NuGetPackagesSource 下,不要使用
nuget install
完全没有。但这只适用于没有额外文件夹的简单包。不幸的是,NLog
和 JQuery
.