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

时间:2014-07-13 16:02:03

标签: nuget nuget-package nuget-server

我有两台计算机,一台连接互联网,另一台没有。

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

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

感谢。

6 个答案:

答案 0 :(得分:10)

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

user_a    1
user_b    0
user_c    2

密钥是> nuget.exe install <PACKAGENAME> -OutputDirectory <OUTPUTDIR> 开关,它使CLI将指定的包安装到其中没有项目文件的目录中。运行此命令会将程序包及其所有依赖项下载到输出目录中,并将每个程序包放入单独的子文件夹中。然后,您可以从输出目录中获取所有-OutputDirectory,并根据需要执行任何操作。

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

答案 1 :(得分:5)

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

我的目标是它应该与NuGet.ServerPowerShell很好地集成,以实现构建自动化。

答案 2 :(得分:3)

在具有Internet访问权限的计算机上,NuGet程序包(.nupkg)应位于本地计算机缓存中。在Windows上,它位于类似于:

的目录中
C:\Users\YourUsername\AppData\Local\NuGet\Cache

因此,您应该能够将.nupkg文件从那里复制到没有Internet访问权限的计算机上。我会在该计算机上创建一个目录,并设置一个指向该目录的新包源。或者,您可以将.nupkg文件复制到本地计算机缓存,只需要知道缓存中有200个NuGet包的限制。然后,您可以创建指向缓存的包源。

答案 3 :(得分:2)

这里的讨论有点晚,但我遇到了同样的问题。我在一家离线工作的中型软件开发商店工作。许多新的NuGet包具有非常大的依赖树。试图手动走树并下载所有必需的包非常麻烦。最后,我编写了NuGet Dependency Downloader。有了它,您可以提供包ID,可选择一个版本,并选择是否要允许预发布包。单击“开始”后,它将下拉列出的包及其运行所需的任何依赖项。举个例子,当我输入“Microsoft.AspNet.Mvc”并选择“预发布”时,这个工具为MVC 6.0 RC1带来了158个软件包。希望这将有助于那些在离线环境中工作的人。

https://github.com/StuffOfInterest/NuGetDependencyDownloader

答案 4 :(得分:1)

在项目路径中执行以下命令。

    dotnet restore --packages <Dependencies Output Dir> <Project Path>

参考:dotnet restore

答案 5 :(得分:0)

在您的csproj文件中:

<Project Sdk="Microsoft.NET.Sdk">


  <PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  <PropertyGroup>