前言
在.NET Core跨平台开发中,正常情况下,如果我们要还原一个项目,可以直接使用命令行工具然后执行还原命令即可,如:
dotnet restore
但是在某些特殊的情况(比如:离线)下,我们直接使用dotnet restore
命令不能还原.NET Core项目的依赖包。
这时,需要怎么样才可以还原.NET Core项目的依赖包呢?
本文就分享在.NET Core跨平台开发中,如何在离线的情况下使用restore命令还原.NET Core项目的依赖包的方法。
准备工作
在实现离线情况下还原.NET Core项目依赖包之前,我们还是先需要借助一台联网的计算机(这是前提)。
首先,使用命令列出本地已有的.NET Core的Nuget资源包,如下:
dotnet nuget locals all --list
以上命令会列出本地所有的.NET Core的Nuget资源包的缓存存储位置:
info : http-cache: C:\Users\xxx\AppData\Local\NuGet\v3-cache
info : global-packages: C:\Users\xxx\.nuget\packages\
info : temp: C:\Users\xxx\AppData\Local\Temp\NuGetScratch
注:xxx 代表当前计算机的用户名
如果执行命令后没有看到以上的Nuget资源包存储位置列表,请检查你是否正确安装.NET Core SDK。
以上命令只是列出.NET Core Nuget资源包所在的位置,但如果你的计算机还未使用过restore
命令的话,这些位置是没有Nuget资源包的。
所以,我们接下来需要在联网的计算机上使用restore
命令来还原这个项目。
本文以一个.NET基金会提供的.NET Core跨平台项目eShopOnWeb
(一个非常经典的DDD实战案例,推荐入门或者初学DDD的朋友,一定要看!!!)为例。
eShopOnWeb项目托管地址为:eShopOnWeb
首先,将 eShopOnWeb
项目克隆到本地(联网的计算机),然后使用restore
命令还原 eShopOnWeb
项目所依赖的Nuget资源包,如下:
dotnet restore
待命令执行完成后,eShopOnWeb
项目的依赖包就还原完成了。这时,我们再打开本地Nuget资源包缓存目录(上文使用dotnet nuget locals all --list
命令列出的)中的其中一个,这里选择:
C:\Users\xxx\.nuget\packages\
我们可以看到,在这个目录里包含了eShopOnWeb
项目所有的依赖包的缓存。当然,如果你还还原过其他项目,Nuget缓存也会存储在这里。
现在,我们将这个目录(packages)打包(使用压缩软件压缩),并拷贝到离线的计算机上(同时,请确保离线的计算机也安装了.NET Core的SDK)。
在离线计算机上解压拷贝过来的packages
文件到任意目录(但为了方便和管理,建议和.NET Core的Nuget资源包的缓存存储位置保持一致,即:C:\Users\xxx.nuget\packages)。
另外,复制一份未还原的eShopOnWeb
项目到离线的计算机上。
离线还原.NET Core项目
以上准备工作完成后,我们在离线的计算机上执行restore
命令,如下:
dotnet restore --source C:\Users\xxx\.nuget\packages\
这样,离线的.NET Core项目eShopOnWeb
在脱机的情况下也完成了还原。
如果要生成项目eShopOnWeb
,执行:
dotnet build --no-restore
如果要运行项目eShopOnWeb
,执行:
dotnet run --no-restore
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册