Nuget包还原

Nuget包还原,nuget,nuget-package,Nuget,Nuget Package,我试图弄清楚,如果包不在本地(即包未提交到源代码管理),NuGet如何知道需要恢复哪些包(以及如何知道在哪里找到它们) 我可以在解决方案中看到我有一个.nuget目录,但它基本上只包含nuget.exe。每个项目中都有一个packages.config,看起来很有希望,它包含以下内容(为了清晰起见缩短了): 我希望看到一个指向包源的URL。因此,如果Nuget只使用包id字符串,那么如果我有多个包源,它们都列出了相同的包id,它怎么知道该怎么做呢?是否只是通过包源中的优先级 我问是因为我有一

我试图弄清楚,如果包不在本地(即包未提交到源代码管理),NuGet如何知道需要恢复哪些包(以及如何知道在哪里找到它们)

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


我希望看到一个指向包源的URL。因此,如果Nuget只使用包id字符串,那么如果我有多个包源,它们都列出了相同的包id,它怎么知道该怎么做呢?是否只是通过包源中的优先级

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


非常感谢。

您的帖子中有两个问题,因此我将尝试逐一回答:

NuGet如何知道需要恢复哪些包

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

<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -nocache  $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "</RestoreCommand>
$(NuGetCommand)安装“$(PackageConfig)”-源“$(PackageSources)”-nocache$(RequiredSentSwitch)-solutionDir“$(solutionDir)”
它负责在每个项目中安装packages.config文件中列出的包

因此,如果Nuget只使用包id字符串,那么如果我有多个包源都列出了相同的包id,它怎么知道该怎么做呢

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

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