C#中Assembly3个获取路径的方法

news2024/10/10 11:34:13

        在C#中,经常要获取路径 ,可以通过Assembly的三个重载方法来获取,如下所示这三个分别是GetCallingAssembly、GetEntryAssembly和GetExecutingAssembly。

            string tmpEntryPath = Assembly.GetEntryAssembly().Location;
            string tmpExeasmPath = Assembly.GetExecutingAssembly().Location;
            string tmpCallasmPath = Assembly.GetCallingAssembly().Location;

1.系统注释 

 GetEntryAssembly()

        //
        // 摘要:
        //     获取默认应用程序域中的进程可执行文件。 在其他的应用程序域中,这是由 System.AppDomain.ExecuteAssembly(System.String)
        //     执行的第一个可执行文件。
        //
        // 返回结果:
        //     程序集是默认应用程序域中的进程可执行文件,或是由 System.AppDomain.ExecuteAssembly(System.String) 执行的第一个可执行文件。
        //     当从非托管代码调用时可返回 null。
        [SecuritySafeCritical]
        public static Assembly GetEntryAssembly();

 GetExecutingAssembly()

        //
        // 摘要:
        //     获取包含当前执行的代码的程序集。
        //
        // 返回结果:
        //     包含当前执行的代码的程序集。
        [SecuritySafeCritical]
        public static Assembly GetExecutingAssembly();

GetCallingAssembly() 

        //
        // 摘要:
        //     返回方法(该方法调用当前正在执行的方法)的 System.Reflection.Assembly。
        //
        // 返回结果:
        //     方法(该方法调用当前正在执行的方法)的 Assembly 对象。
        [SecuritySafeCritical]
        public static Assembly GetCallingAssembly();

2.白话解释 

        GetEntryAssembly获取的是当前应用程序第一个启动的程序,一般就是xxx.exe文件。
GetExecutingAssembly获取的是当前执行的方法所在的程序文件,可能是.exe,也可能是当前方法所在的.dll文件。

        如一个程序MyApp.exe,在程序中引用了MyDll.dll类库,而在MyDll.dll中有一个MyInfo方法,MyInfo调用了MyDll2.dll中的MyInfo2方法,那么结果如下:

  • 在MyApp.exe调用任何一个方法,获得的都是MyApp.exe的程序集信息。

  • 通过MyApp调用MyDll.MyInfo方法时,在MyDll.MyInfo中:

            执行GetEntryAssembly,获得的是MyApp.exe的程序集信息。
            执行GetExecutingAssembly,获得的是MyDll.dll的程序集信息。
            执行GetCallingAssembly,获得的是MyApp.exe的程序集信息。

  • 通过MyDll的方法调用MyDll2.MyInfo2方法时:

            执行GetEntryAssembly,获得的是MyApp.exe的程序集信息。
            执行GetExecutingAssembly,获得的是MyDll2.dll的程序集信息。
            执行GetCallingAssembly,获得的是MyDll.dll的程序集信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2201875.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式面试——C语言和数据结构篇(二)

本篇为C语言和数据结构篇(二) 1、关键字static的作用是什么? 答: 在C语言中,关键字static有三个明显的作用: 1>在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2&…

深度解读数字化转型的核心驱动因素与实践指南从战略到落地

数字化转型的战略重心 在当今商业环境中,数字化转型不仅是企业提升效率的工具,更是创造竞争优势的必要条件。随着技术的飞速发展,企业在面对市场动态变化时,依赖于其数字化基础设施、数据处理能力以及对新技术的敏捷反应能力&…

嵌入式面试——FreeRTOS篇(六) 任务通知

本篇为:FreeRTOS 任务通知篇 任务通知简介 1、任务通知介绍 答: 任务通知:用来通知任务的,任务控制块中的结构体成员变量ulNotifiedValue就是这个通知值。 使用队列、信号量、事件标志组时都需要另外创建一个结构体&#xff0c…

【JAVA开源】基于Vue和SpringBoot的高校学科竞赛平台

本文项目编号 T 075 ,文末自助获取源码 \color{red}{T075,文末自助获取源码} T075,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 教…

如何使用DAMODEL进行AI开发教程

DAMODEL:DAMODEL 目前DAmodel注册并实名赠送50大洋的免费额度,搭载4090的服务器费用不到2r/h 教程: 完成注册并实名后 在此点击创建实例 选择实例配置 选择镜像,看你使用哪种dl框架 设置完毕后创建密钥并选择该密钥。 创建…

防火墙的三种工作模式:路由模式、透明模式(网桥)、混合模式

防火墙作为网络安全的核心设备之一,扮演着至关重要的角色。它不仅能够有效防御外部网络的攻击,还能保护内部网络的安全。在如今复杂多样的网络环境下,防火墙的部署和工作模式直接影响着网络安全策略的实施效果。防火墙通常可以工作在三种模式…

论文阅读笔记-Self-Attention

前言 Self-Attention能够将每个元素和当前时刻元素进行比较来确定上下文元素的重要性,这也使得它在NLP模型中表现优异。而本篇文章则是将卷积结构与Self-Attention结构进行了比较,通过 实验证明了这样的卷积结构同样有着高效的计算和足以和Self-Attention媲美的效果。本篇文…

【AAOS】Android Automotive 9模拟器源码下载及编译

源码下载 repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r61 repo sync -c --no-tags --no-clone-bundle 源码编译 source build/envsetup.sh lunch aosp_car_x86_64-userdebug make -j8 运行效果 emulator Home界面 MAP All apps S…

python爬虫 - 数据提取

🌈个人主页:https://blog.csdn.net/2401_86688088?typeblog 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、数据类型及其对应的提取策略 (一)文本数据 &…

网约巴士订票系统小程序的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,用户管理,巴士信息管理,积分兑换管理,积分纪录管理,新闻信息管理,基础数据管理 微信端账号功能包括:系统…

国产长芯微LDC8531低功耗轨到轨输出 16 位串行输入数模转换器完全P2P替代DAC8531

描述 LDC8531是一款低功耗、单16位缓冲电压输出数模转换器(DAC)。其片上精密输出放大器允许实现轨到轨输出摆动。LDC8531使用多功能三线串行接口,其时钟频率高达30MHz,与标准SPI、QSPI、Microwire和数字信号处理器(DSP…

数据库迁移中的权限问题及解决方法——以Error 1142为例

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

无线领夹麦克风哪个降噪好?选购领夹麦克风需注意的五大隐藏风险

不知道大家有没有遇到这样一个情况,为什么有些视频或直播的声音听起来那么清晰,仿佛身临其境,而自己拍的视频却总是嘈杂不堪,尤其是在户外拍摄的时候,音频中更是充斥着各种各样的噪音。这种问题主要还是麦克风的原因所…

3dmax笔记-ALT X 透明度设置

1 降低max的模型的透明度 ALTX 看区别 区别对比

Sentinel最全笔记,详细使用步骤教程清单

一、Sentinel的基本功能 1、流量控制 流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,…

分辨率提高4到8倍!AI高清修复工具-upscayl使用方法!

你还在为手中的模糊照片苦恼吗? 是不是想把老照片或低分辨率的图片用于大尺寸印刷,却因为画质糟糕而无从下手? 现在你不再需要高深的Photoshop技能,也不用花费巨资找人修图。借助AI高清修复工具Upscayl,只需几秒钟&am…

一文解读数据中台附搭建指南

数据是企业的核心资产,更是企业数字化转型的关键驱动力。为了更好地管理和利用数据,进行数据共享,充分发挥数据的作用,越来越多的企业开始构建实时数据中台。 一数据中台 定义:数据中台是将企业内部各个部门、系统、应…

【嵌入式软件-STM32】STM32简介

目录 一、STM32定义 二、STM32用途 三、STM32特点 四、STM32 四个系列 五、了解ARM 六、芯片解释 七、片上资源 八、命名规则 九、系统结构 内核 Flash DMA 外设种类和分布 十、引脚定义 类型 名称 引脚 十一、启动配置 十二、STM32最小系统电路 STM32及供电 供电引脚 滤波电容…

机器人动力学和轨迹规划

路径规划(way):规划连接位置A与位置B间序列点或曲线的策略。 注意:这个路径规划是非常重要的,是机器人智能的一个体现。 路径规划主要有3个方法:MoveJ:关节点到点运动,MoveL&#…

Spring Boot学习资源库:Java开发者的新篇章

2 相关技术简介 2.1Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任…