• . net core的发布


    引用网址:https://www.cnblogs.com/qingyunye/p/13976357.html

    .NET发布时选择【独立部署模式】引发的故事

    目录

    win-x64发布

    发布时选择

    发布后文件

    应用程序是怎么运行的

    linux-x64发布

    发布时选择

    发布后文件

    应用程序是怎么运行的

    故事:

    用vs2019发布.net core3.1项目时选择了独立部署模式,

    突然很好奇想扒一扒在不依赖框架的情况下程序是怎么运行的?

    进而又想到在Linux下程序是不能直接调用DLL文件的,.net core发布后的项目在Linux下又是怎么运行的?

    最后更想去了解.net core发布在Linux系统运行的文件与发布在Windows系统的文件有什么不同,是怎么做到的一套代码,到处运行的?

    参考:

    .netcore在linux下使用P/invoke方式调用linux动态库

    .NET Core跨平台的奥秘[下篇]:全新的布局 

    ASP.NET Core跨平台 技术内幕

    测试项目:控制台应用程序

    回到顶部

    win-x64发布

    发布时选择

    部署模式:独立

    目标运行时:win-x86

    发布后文件

    文件类型:

    Json文件

    exe文件

    DM文件

    pdb文件

    DLL文件

    从大到小排序,发现几个重要的文件:

    System.Private.CoreLib.dll:基础类库

    coreclr.dll:公用语言运行时 

    clrjit.dll:实时编译器

    自己编码以及引用到的DLL文件

    ???使用反编译工具发现System.Private.CoreLib.dll里面居然包含了各种dll?然后coreclr.dll里面居然是没有dll文件,只有dos头、文件头、可选头、节#,与我想象的相反啊,难道coreclr.dll只是一个中间引用,核心的都在System.Private.CoreLib.dll中?

    Runtime文件:

    CLR文件:

    应用程序是怎么运行的

    参考:c#原理:c#代码是怎么运行的、实例化时发生了什么、静态对象(类、方法、变量、属性)的原理

    DLL/EXE=>CLR/JIT=>机器码

    双击:ConsoleApp1.exe

    回到顶部

    linux-x64发布

    发布时选择

    发布后文件

    文件类型:黑色的是win-x86发布有的文件类型,红色的是win-x86发布没有的文件类型

    Json文件

    DM文件

    PDB文件

    DLL文件

    没有exe应用程序,,linux系统不支持exe程序,系统不一样

    .a文件:LINUX系统中的静态链接库文件

    SO文件:是Linux下的程序bai函数库,即编译好的可以供其他程序使用的代码和数据,类似于(又不仅仅)windows下的DLL文件

    没扩展名的文件,linux也是可以启动的,因为linux应用程序没有固定的扩展名,只要是支持的都能启动

    在linux上,这个没有扩展名的ConsoleApp1就是程序的入口

    应用程序是怎么运行的

    先安装icu库:yum install icu

    然后程序授权:chmod 777 ./ConsoleApp1

    最后运行程序:./ConsoleApp1

    ConsoleApp1程序会通过.so文件调用对应的.dll文件 

    未完待续......

    作者:日积月累码农

    出处: https://www.cnblogs.com/qingyunye/

    如有错误,欢迎您指出。

    本文版权归作者和博客园共有,欢迎转载,但必须在文章页面给出原文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    什么?在SAP中国研究院里还需要会PHP开发?
    如何使用Visual Studio Code调试PHP CLI应用和Web应用
    高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用
    如何对SAP Leonardo上的机器学习模型进行重新训练
    当SAP云平台account的service Marke place里找不到Machine Learning服务该怎么办
    部署在SAP Cloud Platform CloudFoundry环境的应用如何消费SAP Leonardo机器学习API
    如何在Web应用里消费SAP Leonardo的机器学习API
    如何把SAP WebIDE里的Web项目同Github仓库连接起来
    6-20 No Less Than X in BST(20 分)
    6-19 Count Connected Components(20 分)
  • 原文地址:https://www.cnblogs.com/bruce1992/p/15704475.html
Copyright © 2020-2023  润新知