我有两台计算机,一台连接互联网,另一台没有。
我想在脱机计算机上安装Nuget包(Nuget.server)及其所有依赖项。 不幸的是,我不可能只下载软件包本身,我必须手动下载所有依赖项,并且有很多依赖项。
如何在包含所有依赖项的Internet连接的计算机上创建程序包?
感谢。
答案 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.Server
和PowerShell
很好地集成,以实现构建自动化。
答案 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)
答案 5 :(得分:0)
在您的csproj
文件中:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<PropertyGroup>