Nuget包恢复

时间:2013-05-02 14:17:00

标签: nuget nuget-package

我试图找出NuGet如何知道它需要恢复的包(以及它如何知道在哪里找到它们),如果它们不在本地存在(即当包尚未提交到源代码控制时)

我可以在解决方案中看到我有一个.nuget目录但基本上只包含NuGet.exe。每个项目中都有一个看起来很有前途的packages.config,它包含以下内容(为了清晰起见缩短了);

<?xml version="1.0" encoding="utf-8"?>
<packages>
 <package id="AutoMapper" version="2.2.1" targetFramework="net40" />
</packages>

我希望看到一个指向包源的URL。因此,如果Nuget只使用包ID字符串,如果我有多个包列表可用相同的包ID,它将如何知道该怎么做。它只是通过包源中的优先级吗?

我问,因为我有一个来自本地源的包,我删除了包并禁用了包源,清理了解决方案并重建了。它起作用的时候我预计它会失败。

非常感谢。

1 个答案:

答案 0 :(得分:2)

您的帖子中有2个问题,因此我将尝试逐一解决:

  

NuGet如何知道需要恢复的软件包?

正如您所猜测的,Nuget使用.Nuget文件夹自动安装缺少的包。在.Nuget文件夹中,有一个名为“Nuget.targets”的文件,它基本上是一个包含该行的VS项目文件(.csproj)

<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -nocache  $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreCommand>

负责安装每个项目中packages.config文件中列出的软件包。

  

因此,如果Nuget只使用包ID字符串,如果我有多个包列表可用相同的包ID,它怎么知道该怎么办?

在%appdata%\ nuget.config中,您可以看到Nuget的“包源”列表:对于给定的packageId,Nuget将在这些包源中以与nuget.config中相同的顺序搜索它