问题的产生的背景

由于我们使用了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这个文件里,我们可以看到当前项目引用的包包,包包的源,包包的缓存等信息。

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

  1. 你的nuget自主服务器需要被当前linux服务器访问到
  2. 需要在linux里建立一个全局的nuget.config文件,把自主源地址添加
  3. 把obj目录添加到源代码管理里
  4. dotnet restore还源项目,依赖包由obj\project.assets.json文件确定
  5. dotnet build编译项目里,需要有Roslyn文件夹的执行权限
  6. 最后才是成功发布

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

自主依赖包找不到

没有对Roslyn的执行权限

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

成功得来不容!

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

感谢各位阅读!

DotNetCore跨平台~linux上还原自主nuget包需要注意的问题的更多相关文章

  1. 搭建自己的NuGet服务器,上传自定义NuGet包

    第一步搭建NuGet服务器 创建空Web项目 安装Nuget服务,目前最新版本2.8.2 安装完成,会自动生产服务,出现如下界面 发布该网站,并部署至IIS 将.nupkg文件发布至网站的Packag ...

  2. 详解.Net 如何上传自己的包到Nuget平台以及如何使用Nuget包管理器

    首先需要一个Nuget账户,可以在官网注册:https://www.nuget.org.已有账户略. 需要一个ApiKeys,登录之后,在我的账户里找到ApiKeys进去; 创建ApiKeys 下载N ...

  3. nuget服务器搭建,以及如何发布一个Nuget包

    本文章主要介绍如何将本地dll打包成为一个Nuget包,并如何发布到自己的nuget服务器.章节如下 1. 本地dll如何打包,以及版本的更新 2. 在linux上搭建nuget.server 3. ...

  4. idea打包springboot+maven项目并发布在linux上

    2018年11月13日我亲测有效的,很简单的,借鉴博客:https://blog.csdn.net/smilecall/article/details/56288972 第一步:随便建一个maven类 ...

  5. Linux上的文件查找工具之locate与find

    前言 Linux上提供了两款工具用于查找文件,一款是locate,另一款是find. locate的特点是根据已生成的数据库查找,速度较快,但是查找的是快照数据,不准确. 因此在日常使用中,为了准确性 ...

  6. 使用BaGet来管理内部Nuget包

    有的时候,我们想要制作一些nuget包,供自己内部调用,不想公开出去,那么就需要一个能够集中管理nuget包的服务了,今天我来给大家介绍一款轻便好用的包管理服务-----BaGet 下载并部署BaGe ...

  7. Docker在Linux上运行NetCore系列(四)使用私有Nuget与多个本地包引用运行ASPNetCore

    转发请注明此文章作者与路径,请尊重原著,违者必究. 本篇文章演示了使用Dockerfile在Linux(ubuntu16.04)系统上构建ASPNetCore应用,并且在一个解决方案中存在多个项目之间 ...

  8. 使用 Cake 推送 NuGet 包到 AzureDevops 的 Artifacts 上

    前言 大家好,我最近在想如何提交代码的时候自动的打包 NuGet 然后发布到 AzureDevOps 中的 Artifacts,在这个过程中踩了很多坑,也走了很多弯路,所以这次篇文章就是将我探索的结果 ...

  9. [转帖]DotNetCore跨平台~System.DrawingCore部署Linux需要注意的

    DotNetCore跨平台~System.DrawingCore部署Linux需要注意的   https://www.bbsmax.com/A/QV5ZemYVJy/?tdsourcetag=s_pc ...

随机推荐

  1. archlinux系统安装博通B43XX系列无线网卡驱动

    我的无线网卡是博通的B43xx系列,大家都知道博通对于其Wifi卡在 GNU/Linux 上的支持不好可谓是臭名昭著. 用 lspci -vnn -d 14e4: 或者 lspci -vnn | gr ...

  2. latex 插图排版

    LaTeX的图片插入及排版   LaTeX中一般只直接支持插入eps(Encapsulated PostScript)格式的图形文件, 因此在图片插入latex文档之前应先设法得到图片的eps格式的文 ...

  3. linux下用OCI库访问oracle数据库返回错误Cannot create OCI environment!;

    linux下链接oracle数据库,直接用OCI库函数OCI_Initialize初始化返回Oracle ErrorString:Cannot create OCI environment! 原因是缺 ...

  4. 一篇文章读懂Java类加载器

    Java类加载器算是一个老生常谈的问题,大多Java工程师也都对其中的知识点倒背如流,最近在看源码的时候发现有一些细节的地方理解还是比较模糊,正好写一篇文章梳理一下. 关于Java类加载器的知识,网上 ...

  5. python正则表达式手记

    ----------re模块进行正则的使用---------- #result=re.match(正则表达式,要匹配的字符串):使用正则对字符串进行过滤从前面开始匹配#result.group():将 ...

  6. java 静态方法分析

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt210 1.大家都以为"实例方法需要先创建实例才可以调用,比较麻烦, ...

  7. 网络编程:基于C语言的简易代理服务器实现(proxylab)

    本文记录了一个基于c socket的简易代理服务器的实现.(CS:APP lab 10 proxy lab) 本代理服务器支持keep-alive连接,将访问记录保存在log文件. Github: h ...

  8. 自制tunnel口建虚拟专网实验

    R1: interface Tunnel12 ip address 192.168.12.1 255.255.255.0 ip ospf 1 area 0 tunnel source 123.123. ...

  9. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  10. 软件工程(GZSD2015)第二次作业成绩

    作业评分表 姓名 提交 语言 界面 PSP(3) CODE(4) 代码规范(2) 改进(1) 基本得分 提交时间 原始总得分 相对得分 最终得分 涂江凤 20150407 C CLI 3 4 2 1 ...