首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

二、源代码=>程序程序概念介绍

文本脉络图如下: 一、源代码-面向CLR的编译器-托管模块-(元数据&IL代码)中介绍了编译器将源文件编译成托管模块(中间语言和元数据),本文主要介绍如何将托管模块合并成程序. 1、程序的基本概念...2、程序生成的过程 注: (1)、清单指出程序只有一个文件组成, (2)、对于只有一个托管模块,没有资源文件的项目,程序就是托管模块. (3)、如果需要将一组文件合并到程序集中可以使用程序链接器...常用的方法是,把程序的物理表示和逻辑表示区分开,将很少用到的类型和文件放到单独的文件中,并将这些文件作为程序的一部分,如果运行时需要,则去下载,这样不仅节省了磁盘空间,还节省了安装时间.通过程序,...可以在不同的地方部署,同时任然将所有的文件当作一个整体来看待. 4、关于程序自描述的优点 在程序的模块中,还包含与引用的程序有关的信息(版本号、描述等等),具体如下图 这些信息(当然远不止上图中的这点信息...)使程序能够自描述.也就是说CLR能判断为了执行程序集中的代码,程序的直接依赖对象是什么.不需要在注册表或者Active Directory Domain Services(ADDS)中注册额外的信息

75290

查找 .Net 程序

我从观看 .net 程序被移动和挖空的经验中知道,不会有命令行参数。我的大部分内容都不会触发。但是,现在它的移动对我来说很重要。...从过去的工作中,我知道 Windows 上有许多本机 .Net 程序。有些甚至通过 SDK 或其他开发人员工具进入。本土的可能是最有趣的。我们如何找到它们?...\Find-Assemblies.ps1 -Directory 'C:\Windows' -Recurse 查找程序 通过这个列表,我删除了二进制名称和路径,并创建了一个 Splunk 查找。...is_net_windows_file_origname originalFileName as original_file_name OUTPUT netFile | 搜索 netFile=True 我肯定会错过其他依赖于 SDK 和开发人员实用程序的二进制文件...4.0.15744.161_none_12f75b90c6cbba6c\InstallUtil.exe c:\temp\installut.exe 此分析将识别 Windows 上已移动和重命名的 .Net 程序

58830
您找到你想要的搜索结果了吗?
是的
没有找到

页面抖动 和 程序驻留(工作

工作(驻留) 工作(或驻留)是指在某段时间间隔内,进程要访问的页面集合。经常被使用的页面需要在工作集中,而长期不被使用的页面要从工作集中被丢弃。...为了防止系统出现抖动现象,需要选择合适的工作大小。 工作模型的原理是:让操作系统跟踪每个进程的工作,并为进程分配大于其工作的物理块。...如果还有空闲物理块,则可以再调一个进程到内存以增加多道程序数。...如果所有工作之和增加以至于超过了可用物理块的总数,那么操作系统会暂停一个进程,将其页面调出并且将其物理块分配给其他进程,防止出现抖动现象。...正确选择工作的大小,对存储器的利用率和系统吞吐量的提嵩,都将产生重要影响。 ? ? ? 程序工作,就是程序驻留

81520

怎样反射程序

第七部分:反射程序 1、什么是程序? 1、程序是.net中的概念。 2、.net中的dll与exe文件都是程序。(exe与dll的区别?)...4、程序包含:类型元数据(描述在代码中定义的每一类型和成员,二进制形式)、程序元数据(程序清单、版本号、名称等)、IL代码(这些都被装在exe或dll中)、资源文件。...每个程序都有自己的名称、版本等信息。这些信息可以通过AssemblyInfo.cs文件来自己定义。 5、使用程序的好处? 1)、程序中只引用必须的程序,减小程序的尺寸。...2)、程序可以封装一些代码,只提供必要的访问接口。 6、如何添加程序的引用?...动态连接库(=dynamic link library) GAC的详细配置参考:http://support.microsoft.com/kb/815808/zh-cn GAC目录C:\WINDOWS

48520

关于强命名程序

程序的部署方式 一个程序有两种部署方式:    a) 私有方式 和应用程序部署在同一目录下的程序称作私有部署程序。弱命名程序只能进行私有部署。    ...其实不是这样的,在命令行下查看,你会发现它实际上包含很多子目录,子目录的名字和程序的名称是相同的,但它们都不是实际的程序,实际的程序位于程序名对应的目录下。...这里只 有一个目录表明只有一个版本的 GCFWK 程序被安装。实际的程序保存在每一个对应的版本目录下。...1.0.0.0 程序程序,通过更改它的配置文件,转而让程序去引用版本为 2.0.0.0 的程序)来使用新版本;最后, GAC 还提供了对不同版本程序的并存( side-by-side...配置每一个应用程序的  XML 配置文件,让它们指向一个公有目录,这样,在运行时, CLR 将知道到哪里去找这个强命名程序

61210

CLR中的程序加载

CLR中的程序加载       本次来讨论一下基于.net平台的CLR中的程序加载的机制:   【注:由于.net已经开源,可利用vs2015查看c#源码的具体实现】 在运行时,JIT编译器利用程序的...采用静态方法Load()加载程序,可调用它显示的将一个程序加载到AppDomain中: 【注:Assembly类的Load()存在两个重载版本】 /// /// 通过给定的程序的显示名称来加载程序...,并在GAC(全局程序缓存)中查找程序。...如果没有找到,就接着去应用程序的基目录、私有路径目录和codebase位置查找。如果Load找到指定的程序,会返回对代表已加载的那个程序的一个Assembly对象的引用。...2.采用Assembly的LoadFrom方法,指定路径名的方式加载程序: /// /// 已知程序的文件名或路径,加载程序

94680

Redis-4.0.11配置

内核Kernel将程序缓存内存中,每页内存以2M为单位。相应的系统进程为khugepaged。...HugeTLBFS主要用于数据库,THP广泛应用于应用程序。 一般可以在rc.local或/etc/default/grub中对Huge Pages进行设置。 6. ...,然后在它的基础上进行修改),在这个基础上,进行如下表所示的修改(配置文件名redis-6379.conf中的6379建议设置为实际使用的端口号): 配置项 值 配置文件...复制redis-trib.rb 将redis源代码的src目录下的集群管理程序redis-trib.rb复制到/data/redis/bin目录,并将bin目录加入到环境变量PATH中,以简化后续的操作...cluster_my_epoch:0 cluster_stats_messages_sent:4049 通过集群消息总线发送的消息总数 cluster_stats_messages_received:4051 通过过通过群消息总线收到的消息总数

2.5K20

在其他程序访问internal类

前言  本文将介绍如何在其他程序访问internal类的方法 首先我们新建一个解决方案,其中同时新建两个类库FooALibray和FooALibray,如下: ?...InternalsVisibleToAttribute特性  首先,我们在项目FooALibray新增->程序信息文件,那么就获得一个初始的AssemblyInfo类了,然后我们只需新增以下代码: [...InternalsVisibleToAttributeSample")] 那么,之前的那段代码能够正常编译则输出: I am FooA 拓展部分  假设FooBLibray也要访问FooA,是否还要再加入对FooBLibray程序可见呢...将FooBLibray程序名称改为InternalsVisibleToAttributeSample public class FooB { public void PrintA...FooALibrary.FooA().Print();//编译成功 } } 该黑科技是林大佬告诉我的,嘿嘿~~ 总结  我们合理的利用InternalsVisibleToAttribute程序可见特性能够我们需要写

1.2K20

CLR、程序、反射和控制反转

其实这篇文章可以分两篇(clr、程序)和(反射、控制反转)来写,但它们之间有着内在的联系,我这里把它们放到一起学习,以便于自己的深入记忆和理解。...程序:    说程序之前,先来了解一下什么是托管模块,通过前边介绍,我们可以通过任何支持CLR的编程语言来创建源代码文件,然后通过相应的编译器做代码检查和源代码分析,但是不管使用了何种的编译器,最后生成的结果都是一个托管模块...CLR并不与托管模块打交道,它与程序(exe或dll)打交道,于是编译器需将托管模块组合成程序,如图所示: ? 反射:        理解反射之前,最好先写一下代码再来看此介绍,会很好的理解。...元数据其实就一堆表,当我们生成程序或者模块时,编译器会创建一个类型(Type)定义表、字段定义表、方法定义表等等;system.reflection命名空间的某些类型会使得我们能够编写代码来分析这些元数据

57810

C# 命名空间和程序

如果编译器在源代码文件或者引用的程序集中找不到指定的类型,就会在类型前面加上System.IO前缀,如果找不到匹配项,就逐一地在类型前面加上通过using引入的命名空间,知道找到指定的类型,否则编译就会报错...,所以通过using引入命名空间的方式,能极大程度的帮助我们减少代码量.还增强了代码的可读性. 2、编译器查找类型的原理 编译器扫描引用的所有的程序,在其中查找类型定义,一旦找到了正确的程序,程序信息和类型信息就被嵌入到托管模块中的元数据中....为了获取程序信息必须将定义了被引用程序的信息传递给编译器.C#编译器自动在MSCorLib.dll程序集中查找被引用类型,即使没有显示告诉它这么做.MSCorLib.dll程序集中包含所有核心Framework...例如: 应用程序可能同时使用了Microsoft和Wintellect开发的组件,假如两家公司都提供名为Widget类型,两个类型做的事情完全不同,由于干涉不了类型名称。

1.2K80
领券