有没有更好的方法来下载 .NET 离线环境所需的 nuget 包?

Is there a better way of downloading nuget packages required for .NET work for an offline enviroment?

我目前面临一个问题,我有一个离线环境,上面有 Visual Studio。 Web 应用程序开发在我的离线 Visual Studio 安装程序中运行良好,绝对没有问题。但是当涉及到 MSTest 和其他事情时,我似乎 运行 遇到了缺少 nuget 包的问题。

据我所知,没有提供这些包的安装程序(如 Microsoft.VisualStudio 等),最好的方法似乎是让具有互联网连接的机器在恢复操作期间下载包然后将包裹拖过来。但这肯定是不对的——微软肯定比这更好地支持离线开发。

有没有人对这个问题有任何经验或建议?

您应该必须创建一个本地 nuget 包源来存储相关的 nuget 包。使用时,以后再也不用来网络进行恢复操作了。

无论你是怎么实现的,你都必须连接到互联网一次才能将这些包从互联网下载到你的本地磁盘。之后,您的 MSTest 项目无需连接到 Internet。

工具下-->选项-->Nuget包管理器--> 包源

创建一个名为 Local Cache 的本地 nuget 包源并为其设置一个值。

我这边,值为C:\Local Caches

请不要忘记点击 更新 按钮。

然后,请输入nuget.org webiste下载这些包然后将这些nupkg文件复制到本地文件夹C:\Local Caches.

将它们复制到本地路径:

之后,创建MSTest工程时不需要联网

每当您在离线环境中遇到 nuget 包丢失时,您应该将相关的 nuget 包下载到您的本地 nuget 源中。

这是离线环境的必由之路,不如网络环境方便。相比网络环境,离线更需要考虑。

============================

更新 1

每个 nuget 包都有自己的 nuget 依赖项。并且它的复杂度取决于包的作者,我们无权对其进行任何更改。如果你坚持要使用离线环境,那么这些你都得做。或者你可以试试这个可能更容易:首先,删除 C:\Users\xxx\.nuget\packages.

下的所有 nuget cahes

然后,连接网络,打开VS,创建任何你想使用的项目,然后构建一次。

所有 所需的 nuget 包将存储在 C:\Users\xxx\.nuget\packages 下。您用于所有项目模板的 nuget 包列在该文件夹下。在该功能中,您不再需要手动逐一查询它们的依赖关系,一次性将packages文件夹中的内容全部复制到本地Local Caches文件夹中。这样比较方便。