ASP.Net Core on Linux (CentOS7) 共享第三方依赖库部署
原文:
ASP.Net Core on Linux (CentOS7) 共享第三方依赖库部署
背景:这周,心情来潮,想把?Aries 开发框架?和?Taurus 开发框架?给部署到Linux上,于是开始折腾了。 经过重重非人的坑,终于完成了任务: Aries on CentOS7:mvc.aries.cyqdata.com Taurus on CentOS7:mvc.taurus.cyqdata.com 不过在发布的过程中,发现有大堆共同的dll(100多个,20多M): 看见一大堆这些dll,感觉很影响视觉,而且多个项目就要上传多份,很是麻烦。 于是研究了一下,能不能把这些和项目的文件分开,独立到一个指定的目录中去。 研究过程:为什么要研究,因为网上根本搜不到啊,我X,这.net core 都出这么多年了,就没人有点洁癖,把这事给解决然后写篇文章么! 1、本人机器早期装的是VS2017版本,发布版本时,没有“部署模式”选项。 2、后来升级了一下,发现版本选项里有“部署模式”选项,里面有框架依赖和独立两种,于是看了下相关说明: .NET Core 应用程序部署可以为 .NET Core 应用程序创建三种部署:
经过研究测试,不管哪种方式,发布后,还是有一大堆Microsoft.XXXX.dll。 然后认真看仔细后发现,FDD部署,也是不处理依赖第三方依赖项的。 你连Microsoft和System打头的都叫第三方依赖项,哥也没办法了。 ? 后来想到配置文件:*.runtimeconfig.json,感觉这里应该能折腾点什么。 { "runtimeOptions": { "tfm": "netcoreapp2.0","framework": { "name": "Microsoft.NETCore.App","version": "2.0.0" },"configProperties": { "System.GC.Server": true } } } 百了和runtimeconfig.json相关的文章,发现一篇翻译自老外的文章: https://www.cnblogs.com/lwqlun/p/9704702.html 按着关键说明,以为找到了春天: 于是在:additionalProbingPaths 这个属性上陷入了不归路,特别是packages这个起名,让我一路以为它和第三方依赖包有关。 结果却不管怎么折腾,都悲催了。 最后只能看原文,然后看源码是怎么加载配置文件的。 配置文件加载的源码:https://github.com/dotnet/core-setup/blob/v2.1.3/src/corehost/cli/fxr/fx_muxer.cpp#L464 结果一堆C++,看的好不头痛,还是暂时放弃了,感觉情绪未到。 休息了一会,又重新把文章给仔细看了一下,开始关注了一下*.deps.json, 毕竟这个文件,默认是不用上传的,所以很自然性的被忽略了。 不过当我把它上传上去的时候,发现它被加载,而且,报错了。 感觉找到了方向: 现在仔细一看,deps应该depends依赖的简写,用于处理依赖包配置的。 解决方案:?Linux下的web目录是这样的: 于是,把*.deps.json里面 lib/开头的路径,全部给换成 /home/web/package ,然后上传,结果,OK了。 最后的部署目录,就剩下这么干净了: 总结:虽然最后定位到deps.json可以处理这个事,不过默认产生的deps.json东西有点多,要替换的路径也有点多。 估计再研究一下,应该还可以简化一下这个工作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |