如何获得离线安装的所有nuget依赖项

Col*_*Ray 6 nuget nuget-package nuget-server

我有两台电脑,一台有互联网连接,另一台没有.

我想在脱机计算机上安装Nuget包(Nuget.server)及其所有依赖项.不幸的是,不可能只下载软件包本身,我必须手动下载所有依赖项,其中有几十个.

如何在包含所有依赖项的Internet连接的计算机上创建包?

谢谢.

Adr*_*ian 13

我刚刚经历了这个痛苦,并希望仅使用NuGet CLI找到解决方案.事实证明它非常简单:

> nuget.exe install <PACKAGENAME> -OutputDirectory <OUTPUTDIR>
Run Code Online (Sandbox Code Playgroud)

关键是-OutputDirectory交换机,它使CLI将指定的包安装到一个没有项目文件的目录中.运行此命令会将程序包及其所有依赖项下载到输出目录中,并将每个程序包放入单独的子文件夹中.然后,您可以.nupkg从输出目录中获取所有内容,并执行您需要执行的操作.

更新:正如Igand在评论中指出的那样,-OutputDirectory实际上并不需要切换.如果省略nuget.exe将只下载到当前文件夹中.最好不要将其下载到包含项目文件的文件夹中(除非你正在追求).

  • 谢谢!你的意思是从简单的 consele 运行,对吧?然后即使没有 -OutputDirectory 选项它也可以工作,带有包的目录只是通过 nuget.exe 下载到目录中。我像这样使用它“nuget install NullGuard.Fody -Version 1.8.0”,其中名称和版本只是从 nuget.org 上的信息复制粘贴给给定的包。 (2认同)

Ana*_*nas 6

我也有类似的需求,所以我创建了NuSave.

我的目标是,它应该很好地集成NuGet.Server,并PowerShell为构建自动化.


Mat*_*ard 5

在可以访问 Internet 的计算机上,NuGet 包 (.nupkg) 应位于本地计算机缓存中。在 Windows 上,它位于类似于以下内容的目录中:

C:\Users\YourUsername\AppData\Local\NuGet\Cache
Run Code Online (Sandbox Code Playgroud)

因此,您应该能够将 .nupkg 文件从那里复制到没有互联网访问权限的计算机上。我会在那台计算机上创建一个目录并设置一个指向该目录的新包源。或者,您可以将 .nupkg 文件复制到本地计算机缓存,但请注意缓存中的 NuGet 包限制为 200 个。然后你可以创建一个指向缓存的包源。


小智 5

使用dotnet restore带有--packages标志的命令,这会将包下载到指定的目录。

dotnet restore --packages <TargetDirectory> <ProjectPath>
Run Code Online (Sandbox Code Playgroud)

参考:dotnet 恢复

指定恢复的包的目录。

  • 虽然此代码片段可能是解决方案,但[包括解释](//meta.stackexchange.com/questions/114762/explaining-entirely-‌​code-based-answers)确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而那些人可能不知道您建议代码的原因。 (2认同)