linux上还原自主nuget包需要注意的问题

问题的产生的背景

由于我们使用了jenkins进行部署(jenkins~集群分发功能和职责处理),而对于.net core项目来说又是跨平台的,所以对它的项目拉取,包的还原,项目的编译和项目的发布都是在一台linux的jenkins节点上进行的,而我们开发时是在windows系统,所以在进行还原和编译时出现了一些问题,今天的文章主要是解决这些问题的。

.net frameworks时代

我们在.net时代有包管理工具nuget,并且已经知道了它的好处,类似于nodejs的npm,帮助我们管理项目的依赖关系,升级和卸载都十分方便,它在.net项目里被存储到了解决方案下的packages目录,而在发布时,msbuild会根据这个目录去升级项目,如果这个packages里没有对象的包包依赖,就会从nuget源里进行下载,nuget全局源在windows系统里,一般存储在C:\\Users\\lind\\AppData\\Roaming\\NuGet\\NuGet.Config文件里,而本地系统也会有一个包包的缓存,一般会存储在C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\目录下面,这样在下次安装包的时候,就可以直接从本地进行安装了,官方nuget源的地址是https://api.nuget.org/v3/index.json,如果你自己去定义nuget服务器的话,也可以把它添加到nuget源里,直接修改C:\Users\lind\AppData\Roaming\NuGet\Nuget.Config文件就可以了,或者在vs的工具-选项里去添加它。

.net core时代

在进行跨平台的core时代后,我们的packages文件夹没有了,之前的包都被存储到了obj目录下面,而包的映射关系在obj\project.assets.json这个文件里,我们可以看到当前项目引用的包包,包包的源,包包的缓存等信息。

linux上还原自主nuget包需要注意的问题_第1张图片

注意:nuget在各大系统中源地址的路径

  1. Windows 中路径是 %appdata%NuGetNuGet.Config ,

  2. Mac 与 Linux 中的路径是 ~/.nuget/NuGet/NuGet.Config

  3. 如果没有 NuGet.Config 文件,可以运行 dotnet restore 命令生成。

还原自主Nuget包需要注意的问题

  1. 你的nuget自主服务器需要被当前linux服务器访问到

  2. 需要在linux里建立一个全局的nuget.config文件,把自主源地址添加

  3. 把obj目录添加到源代码管理里

  4. dotnet restore还源项目,依赖包由obj\project.assets.json文件确定

  5. dotnet build编译项目里,需要有Roslyn文件夹的执行权限

  6. 最后才是成功发布

生成过程中的一些错误截图

自主依赖包找不到

0?wx_fmt=png

没有对Roslyn的执行权限

linux上还原自主nuget包需要注意的问题_第2张图片

最后,等待我们的才是成功!

成功得来不容!

希望通过我们的分享,可以帮到正遇到问题的您!

 
   

原文地址:http://www.cnblogs.com/lori/p/7605460.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

640?wx_fmt=jpeg

你可能感兴趣的:(linux上还原自主nuget包需要注意的问题)