CLR
文章平均质量分 54
sqlchen
这个作者很懒,什么都没留下…
展开
-
CLR via C# 读书笔记1-1
CLR via C# 读书笔记1-1把源代码编译为托管模块 (Managed Modules)进行开发之前,你首先需要选择你擅长的语言。某些时候这很难抉择,因为不同的开发语言提供不同的开发特性。例如:非托管 C/C++ 提供了操作系统非常底层的控制权,你能够随心所欲地管理内存,轻而易举地建立线程,等等。 相反的 Microsoft Visual Basic 6.0 让你能快速的开发 UI翻译 2013-04-28 10:52:33 · 789 阅读 · 0 评论 -
CLR via C# 读书笔记1-6
.NET Framework 类库.NET Framework 类库 (FCL),以及Microsoft 提供的其他类库(Windows Azure SDK, DirectX SDK 等)都包含了许许多多的类型,帮助开发者更便捷地建立各种类型的程序集:■ Web services ■ Web Forms/基于MVC HTML 的应用程序 (网站) ■ Windows GUI 程序翻译 2013-05-10 14:14:30 · 679 阅读 · 0 评论 -
CLR via C# 读书笔记1-8
通用语言规范 Common Language SpecificationCLR 继承了多种语言,并允许不同语言之间的对象能互操作,这是因为 CLR 建立了一套类型,metadata (自描述), 以及通用运行环境的标准。但是不同的语言之间差异还是相当大,比如有的区分大小写,有的却不;有的支持有的 unsigned 整形值, 运算符重载, 可变的参数数目等等,有的却不。Microsoft翻译 2013-05-10 17:06:15 · 800 阅读 · 0 评论 -
CLR via C# 读书笔记2-7
简单的管理控制 (配置)用户能够使用一个配置文件来控制程序的运行, CLR 会读取其中的内容来调整定位/载入程序集的策略。这些配置文件以 XML 格式书写,并与某个程序/机器进行关联。使用一个独立的配置文件(而不是注册表)使得这些设定能够更容易的分发。这里先举个实际应用的例子:计划配布的产品目录:AppDir directory (产品根目录)|- Program.exe|-翻译 2013-05-24 09:43:02 · 730 阅读 · 0 评论 -
CLR via C# 读书笔记目录
一口气写了CLR via C# 两章的笔记,有些内容自己也似懂非懂,有些则觉得很好很强大,所以趁此机会作个目录同时为每篇文章打个评分: 纯理论,无聊有参考价值,可看有实用价值,必看CLR via C# 读书笔记1-1: 托管模块 (Managed Modules)定义CLR via C# 读书笔记1-2:程序集(Assemblies)定义CLR via C# 读书笔记1-3翻译 2013-05-24 10:33:18 · 828 阅读 · 0 评论 -
CLR via C# 读书笔记2-1
.NET Framework 开发的目标原先的Windows程序有以下3个不足:采用的 dynamic-link libraries (DLLs) 方式在升级后经常对已有程序造成影响,被戏称为 “DLL hell”。 安装一个程序的时候总是会影响到整个系统(比如:目录,注册表,快捷方式等等),这使得一个程序并不是一个单独的个体,从而无法简便的备份该程序也无法简单地从一台电脑迁移到另一台翻译 2013-05-13 16:18:56 · 600 阅读 · 0 评论 -
CLR via C# 读书笔记1-9
与非托管代码的互操作CLR 提供3种与非托管代码的交互方案:■ 托管代码通过使用 P/Invoke 机制 来调用DLL文件中的非托管函数许多 FCL 中定义的类型内部都有调用到 Kernel32.dll, User32.dll 等等文件中的函数。同时许多程序语言会提供托管代码调用非托管代码的简便途径,比如 C# 程序能够直接调用 从Kernel32.dll 导出的 CreateSema翻译 2013-05-13 11:47:13 · 640 阅读 · 0 评论 -
VC 调用托管程序集(.Net Managed Assemblies)
前言.Net 类库功能非常全面分装了大量应用级别的API,所以有时会有在VC 中调用托管程序集(.Net Managed Assemblies) 的需求。本文通过示例对该步骤进行说明,并提供一些参考。前提本文假设已有一个现成可用的托管程序集,代码如下:// 媒体类:用来载入一个媒体文件,并解析出信息public class Media{ // 内部处理 private vo原创 2013-06-03 13:42:21 · 1612 阅读 · 0 评论 -
最佳 .NET 资源清理策略
class FileDealer: IDisposable{ //定义一个访问文件资源的Win32句柄 private IntPtr fileHandle; //定义引用的托管资源 private ManagedRes managedRes; //定义构造器,初始化托管资源和非托管资源 public FileDealer(IntPtr ha转载 2014-12-01 16:42:45 · 512 阅读 · 0 评论 -
.NET Reflection optimization 反射优化
原文地址:http://www.codeproject.com/Articles/503527/Reflection-optimization-techniques简介反射是 Microsoft .NET framework 中非常强大的特性,它在 System.Reflection 命名空间中提供了一整套在运行时动态载入/处理程序集的 API。反射 (Reflection) 如此强大翻译 2013-05-30 16:01:45 · 1767 阅读 · 0 评论 -
CLR via C# 读书笔记1-5
本地代码生成器: NGen.exeNGen.exe 能把 IL 代码变异为本地代码,这使得在运行时 CLR 的 JIT 编译器不需要在运行时编译 IL 代码从而提高运行效率。NGen.exe 适用以下两个场景:■ 提高程序的启动速度■ 降低程序的 working set (当你的程序集会被多个进程适用的时候) NGen.exe 有这个作用的原因是它把编译后的本地代码存放在一个独立文翻译 2013-05-10 13:36:34 · 705 阅读 · 0 评论 -
CLR via C# 读书笔记1-7
通用类型系统 Common Type System (CTS)CLR 中的各种类型扮演了最终要的角色,它们决定了一种程序语言与另一种程序语言交互的机制。基于此点 Microsoft 建立一个规范—通用类型系统 Common Type System (CTS)—它描述了类型怎样定义及行为。PS: Microsoft 已经向 ECMA 提交了 CTS (连同 .NET Framework 中的翻译 2013-05-10 15:04:18 · 725 阅读 · 0 评论 -
CLR via C# 读书笔记1-4 追记
IL 的验证IL 提升了程序的强壮性和安全性,当IL 转换成本地 CPU 指令时, CLR 会进行一个验证的处理。这个验证处理保证了 IL 代码所干的事情是安全的。比如:每个被调用方法的参数是匹配的,返回值被正确使用,函数结尾有 return 语句等等。在 Windows 中每个进程都有其自己的虚拟地址空间,这样设计的初衷是防止一个进程错误的读写到另一个进程的内存空间而引起的安全性问题。翻译 2013-05-10 11:25:00 · 746 阅读 · 0 评论 -
CLR via C# 读书笔记1-2
托管模块集成在程序集(Assemblies)中CLR 实际上并不处理模块,它处理程序集。程序集是一个或多个模块/资源文件的集合,也是最小的可复用,安全性,版本化的最小单位。根据你选择的编译器,你可以生成一个或多个程序集。在 CLR 的概念中,这称之为组件(component)。插图 1-2 将帮助你理解程序集到底是什么。托管模块和资源文件经过一个工具的处理集成为程序集,这个工具生成一个 P翻译 2013-05-02 10:40:50 · 556 阅读 · 0 评论 -
CLR via C# 读书笔记1-3
载入 Common Language RuntimeCLR 负责托管代码的执行,所以在运行的机器上必须安装有.NET Framework。可以通过在 %SystemRoot%\System32 目录中是否存在 MSCorEE.dll 文件来判断.NET Framework 是否已经安装。特殊情况同一台机器上可能安装了多个版本的.NET Framework,你可以瞧一下这两个目录:%Syst翻译 2013-05-06 13:58:28 · 691 阅读 · 0 评论 -
CLR via C# 读书笔记2-2
把类型编译成一个模块先假设有这么一个简单的程序:public sealed class Program { public static void Main() { System.Console.WriteLine("Hi"); }}该程序定义一个名为 Program 的类型,它拥有一个公有静态 (public, static) 方法 Main,该方法参照 System.翻译 2013-05-20 13:35:00 · 661 阅读 · 0 评论 -
CLR via C# 读书笔记2-3
初识元数据(Metadata)前文已经介绍过,编译后生成的托管文件包含4 部分内容:PE32(+) 头,CLR 头,元数据以及 IL 代码。metadata 是一块包含若干个表的二进制数据,这些标分为3 种类别: 定义表(definition tables), 参照表(reference tables) 以及 manifest 表。表 2-1 列出了一些常见的定义表:表2-1 常见翻译 2013-05-20 14:56:20 · 818 阅读 · 0 评论 -
CLR via C# 读书笔记1-4
运行程序集代码托管程序集由 metadata 和 IL 组成,IL 是一种不依赖 CPU 的机器语言,相对大多数的 CPU 机器语言来说,它属于高级语言。它可以建立/初始化对象,调用虚拟方法,直接操作数组,甚至进行错误捕获等,你可以把它看作一种面向对象的机器语言。IL 与其他机器语言一样可以被写成程序集语言 (assembly language),Microsoft 提供了两个工具 ILA翻译 2013-05-07 15:10:15 · 665 阅读 · 0 评论 -
CLR via C# 读书笔记2-4 追记
使用程序集连接器 (Assembly Linker)除了使用 C# 编译器,你也可以使用 Assembly Linker 工具(AL.exe)来作成包含多个模块(这些模块可以是不同开发语言编译器编译的产物)的程序集。通过这种方法能够生成纯资源程序集 (术名: satellite assemblies),专门用来对应本地化。再次拿前文生成MultiFileLibrary.dll的例子来说明,这次翻译 2013-05-22 14:29:26 · 713 阅读 · 0 评论 -
CLR via C# 读书笔记2-4
从模块到程序集前文的 Program.exe 不仅是一个包含元数据的 PE 文件,也是一个程序集。所谓的程序集是一个或多个包含类型定义或资源的文件的集合。程序集中的一个文件被用来存放 manifest,这个 manifest 是另一个元数据表的集合,其中包含了程序集中所有文件的名称,以及程序集的版本,culture,发布者,公有类型等信息。CLR 处理程序及时,总是首先打开这个程序集中的 ma翻译 2013-05-22 11:15:40 · 930 阅读 · 0 评论 -
CLR via C# 读书笔记2-5
程序集的版本资源信息使用 AL.exe 或 CSC.exe 生成的程序集都会包含一个标准 Win32 版本资源,通过查看这个文件的属性可以查看该信息,也可以在程序代码中调用System.Diagnostics.FileVersionInfo 的静态方法 GetVersionInfo 来查看。图 2-4 显示了之前生成的 MultiFileLibrary.dll 属性对话框:可以通过设定翻译 2013-05-23 10:15:21 · 759 阅读 · 0 评论 -
CLR via C# 读书笔记2-6
Culture程序集包含有 culture 信息,并作为其标示的一部分,程序集能被限定为某一特定的 culture (German, US English 等等),Culture 使用一个字符串(RFC 1766)来标示。通常一个仅包含源代码的程序集,并不包含特定的 culture 信息,所以也就不需要特别指定,这样的程序集是中性 culture (culture neutral)的。翻译 2013-05-23 11:46:55 · 650 阅读 · 0 评论 -
Fuslogvw.exe (Assembly Binding Log Viewer)
Fuslogvw.exe (Assembly Binding Log Viewer)原创 2017-09-04 14:55:54 · 675 阅读 · 0 评论