【问题标题】:Nuget package restoreNuget 包还原
【发布时间】:2013-05-02 14:17:00
【问题描述】:

我正在尝试弄清楚 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,它怎么知道该怎么做。是否只是通过包源中的优先级?

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

非常感谢。

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    您的帖子中有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 中相同的顺序在这些包源中搜索它

    【讨论】:

      猜你喜欢
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      相关资源
      最近更新 更多