DotNetCore跨平台~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这个文件里,我们可以看到当前项目引用的包包,包包的源,包包的缓存等信息。

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

  1. Windows 中路径是 %appdata%\NuGet\NuGet.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. 最后才是成功发布

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

自主依赖包找不到

没有对Roslyn的执行权限

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

成功得来不容!

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

感谢各位阅读!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:DotNetCore跨平台~linux上还原自主nuget包需要注意的问题,如需转载请自行联系原博主。

时间: 2024-10-24 12:21:16

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

DotNetCore跨平台~文章索引~永久更新

本索引目录主要包括仓储大叔对dotnet core架构的研究与知识积累,从2016年开始进行撰写,到今天已经有一年多了,其中有一些小知识,小技巧,小应用,希望给大家在开发时一些启发,也希望dotnet core越来越好,希望2.0正式版快点出来! 我们的框架应该是基于组件化的! 我们的系统应该是基于微服务化的! 我们的部署,应该是基于自动化的! DotNetCore跨平台目录 DotNetCore跨平台~Startup类的介绍(2016-05-31 16:25) Linux~centos上安装.

DotNetCore跨平台~System.DrawingCore部署Linux需要注意的

你在windows上使用图像组件没有任务问题,但部署到linux之后,将注意以下几点: 安装nuget包ZKWeb.System.Drawing 项目里还是引用System.DrawingCore,这点不用改 安装gdiplus插件,这个需要根据linux类型不同,有不同的方法,大叔做了一下总结 安装gdiplugs的方法 大叔总结的方法ubuntu && debian sudo apt-get install libgdiplus cd /usr/lib sudo ln -s libgd

如何在 Linux 上使用 BackupPC 来架设跨平台的备份服务器

如何在 Linux 上使用 BackupPC 来架设跨平台的备份服务器 也许你没有从我先前关于 backupninja 和 backup-manager 的两篇文章中发现,我是一个超级备"粉".当提到备份,我宁愿备份的太多而不希望备份不足,因为如果我们有需要的话,你将会感激你为重要数据生成额外的拷贝所付出的时间和精力. 在这篇文章中,我将向你介绍 BackupPC,一个跨平台的备份服务器软件,它可以通过网络为 Linux,Windows 和 MacOS 等系统上的客户端主机拉取备份.B

maven项目部署在linux上的jar包问题

问题描述 maven项目部署在linux上的jar包问题 昨天吧写好的程序部署在linux上准备测试.发现找不到hibernate3.0.6.jar 看后发现, 这个jar包是引用在本地磁盘上的一个jar包.如:G:xxxx/xxxx/xx/hibernateXX.jar ,但是maven的jar包也已经打包到lib下放到程序包的同级目录下.可能linux上没有盘符, 而maven里找jar包的是通过pom文件找jar包的.pom文件里面写的是G:xxxxxxx.hibernateXX.jar

c#-C#网络编程使用SharpPcap.dll来抓取网络上的TCP数据包,怎么才能完整的还原抓取的数据?

问题描述 C#网络编程使用SharpPcap.dll来抓取网络上的TCP数据包,怎么才能完整的还原抓取的数据? 5C 如题,C#网络编sd程使用SharpPcap.dll来抓取网络上的TCP数据包,怎么才能完整的还原抓取的数据?我是要抓取特定的两台机器之间的数据传递,已知传递的数据包的组成规则,有这么几个问题:1.怎么才能完整的获取所有的数据包?2.获取的数据包需不需要考虑TCP数据包的重传或者错误传递的数据包? 谢谢. 解决方案 c# 使用sharppcap实现 网络抓包 使用SharpPCa

微软发布开源版ASP.NET 5:支持在Windows/Mac/Linux上运行

在今日的博客文章中,Scott Guthrie宣布了ASP.NET 5.而它所带来的最大变化,就是自诞生15年来首次推出了支持跨平台的开源版本.作为Visual Studio CTP 6的一部分,这款流行的Web开发应用程序框架,现已能够在Windows.Mac.以及Linux平台上运行.本次更新还带来了其它一些非常重大的改 变,包括无需重编译即可看到代码变动的动态开发.NuGet依赖关系管理.配置管理的新选项.依赖集成.以及更快的HTTP性能. 除了可在Windows.Mac和Linux平台上

如何使用图形化工具远程管理 Linux 上的 MySQL

如果你在一个远程的VPS上运行了MySQL服务器,你会如何管理你的远程数据库主机呢?基于web的数据库管理工具例如phpMyAdmin或者Adminer可能会是你第一个想起的.这些基于web的管理工具需要一个正常运行的后端的web服务和PHP引擎.但是,如果你的VPS仅仅用来做数据库服务(例如,数据库与其它服务独立存放的分布式结构),为偶尔的数据库管理提供一整套的LAMP是浪费VPS资源的.更糟的是,LAMP所打开的HTTP端口可能会成为你VPS资源的安全漏洞. 作为一种选择,你可以使用在一台客

DotNetCore跨平台~一起聊聊Microsoft.Extensions.DependencyInjection

写这篇文章的心情:激动 Microsoft.Extensions.DependencyInjection在github上同样是开源的,它在dotnetcore里被广泛的使用,比起之前的autofac,unity来说,它可以说是个包裹,或者叫适配器,它自己提供了默认的DI实现,同时也支持第三方的IOC容器,在这段时间里使用了它,就想,这东西为什么被在dotnetcore里大放异彩?为什么会全程使用它?从程序的开始到程序启动起来,你可以发现它无处不在,在框架里是这样,在业务层同时也是这样. 聊聊Mi

Linux 上 10 个最好的 Markdown 编辑器

在这篇文章中,我们会点评一些可以在 Linux 上安装使用的最好的 Markdown 编辑器. 你可以在 Linux 平台上找到非常多的 的 Markdown 编辑器,但是在这里我们将尽可能地为您推荐那些最好的. 对于不了解 Markdown 的人做个简单介绍,Markdown 是由著名的 Aaron Swartz 和 John Gruber 发明的标记语言,其最初的解析器是一个用 Perl 写的简单.轻量的同名工具.它可以将用户写的纯文本转为可用的 HTML(或 XHTML).它实际上是一门易