雁过请留痕...
代码改变世界

随笔分类 -  .Net

《CLR via C#》笔记——程序集的加载和反射(1)

2012-07-16 17:25 by xiashengwang, 2556 阅读, 收藏, 编辑
摘要: 一,程序集加载 JIT编译器在将IL代码编译成本地代码时,会查看IL代码中引用了那些类型。在运行时,JIT编译器利用程序集的TypeRef和AssemblyRef元数据表的记录项来确定哪一个程序集定义了引用的类型。在AssemblyRef元数据记录项中记录了程序集强名称的各个部分—包括名称,版本,公钥标记和语言文化。这四个部分组成了一个字符串标识。JIT编译器尝试将与这个标识匹配的程序集加载到当前的AppDomain中。如果程序集是弱命名的,标识中将只包含名称。1,Assembly的Load方法 在内部CLR使用Assembly的Load方法来加载这个程序集,这个方法与Win32的LoadLi 阅读全文

sscli2.0(Rotor) win7+vs2008编译

2012-07-01 23:19 by xiashengwang, 480 阅读, 收藏, 编辑
摘要: 一,下载sscli2.0http://www.microsoft.com/en-us/download/details.aspx?id=4917二,编译sscli2.0需要安装Perlhttp://www.activestate.com/Products/ActivePerl/一路安装即可。三,解压sscli2.0后,需要修改一些文件,具体可参考这篇blog:http://blogs.msdn.com/b/jeremykuhne/archive/2008/02/19/sscli-2-0-and-visual-studio-2008.aspx唯一还要修改一个地方的是,打开env.core.pl文 阅读全文

winForm 国际化的简单实现

2011-12-23 14:17 by xiashengwang, 656 阅读, 收藏, 编辑
摘要: 国际化就是要实现多语种的界面切换。首先,我们不可能用if else等语句来根据选择的不同语种对所有的控件一个一个的设值,这样太麻烦了。.Net提供了国际化相关的支持,主要放在System.Globalization命名空间下。下面是一个简单的实现,麻雀虽小,五脏俱全。这个程序是最近写的一个程序,就在这基础上进行改造,关键是弄懂原理。1> 首先要加入Resource文件在VS工程-->添加新项目里加入三个resource文件,Resource文件的作用就是存放我们的界面控件的显示字符串。这里我们要实现3种语言的切换,所有加入了3个,分别命名为:Resource.en-US.resx, 阅读全文

在for,foreach语句中小心使用控件的SendToBack,BringToFront方法

2011-12-15 23:03 by xiashengwang, 1183 阅读, 收藏, 编辑
摘要: 今天写了段VB。Net遍历控件的方法,乍一看没有什么问题,但结果却出人意料,control集合的元素没有遍历完,并且有重复的元素。 Public Sub SetControlLableAndPropertyFromXml(ByVal parent As Control) For Each subControl As Control In parent.Controls If subControl.HasChildren Then SetControlLableAndPropertyFromXml(subContro... 阅读全文

《CLR via C#》笔记——CLR的执行模型

2011-09-22 20:46 by xiashengwang, 360 阅读, 收藏, 编辑
摘要: 一.将源代码编译成托管代码1, CLR(Common Language Runtime)公共语言运行时是一个可由多种语言使用的“运行时”,CLR的核心功能(比如内存管理,程序集加载,安全性,异常处理和线程同步)可由面向CLR的所有语言使用。如“运行时”使用异常来报告错误,所以面向“运行时”的所有语言都能通过异常来报告错误。2, 可以将编译器视为语法检查器和“正确代码”的分析器,他们检查你的代码,确定你的一切都有一些含义,然后输出你对意图进行描述的代码,不同的编程语言允许不同的语法来开发。不要低估选择的价值。如对数学和金融领域,使用APL语法比用Perl表达同样的意图更节约开发时间。3, Mic 阅读全文

Winform下KeyDown,KeyPress,KeyUp事件的总结

2011-09-15 13:26 by xiashengwang, 4928 阅读, 收藏, 编辑
摘要: 在winform程序中,经常会用到这几个事件用于控制数字输入,按键动作等操作,但一直没有完全弄清楚他们之间的区别和联系,到底什么时候用哪一个事件合适,闲暇无事,做了一个小小的总结,以免以后犯糊涂。1) 这三个事件调用的先后顺序(MSDN) 1.KeyDown :在控件有焦点的情况下按下键时发生 2. KeyPress :在控件有焦点的情况下按下键时发生。 3. KeyUp :在控件有焦点的情况下释放键时发生。2) KeyDown和KeyPress在MSDN上的解释完全一样,都是在按下键的时候发生,那区别是什么呢?textBox1_KeyDown(object sender, KeyEventA 阅读全文

《CLR via C#》笔记——类型基础

2011-06-01 16:25 by xiashengwang, 299 阅读, 收藏, 编辑
摘要: 一.所有类型都是从System.Object派生。1,下面两种类型定义完全一致://隐式派生自ObjectClass Employee{...}//显示派生自ObjectClass Employee:System.Object{…}2,System.Object的主要公共成员Equals:两个对象完全相同,返回true。GetHashCode:返回对象值的Hash码,当对象要在一个Hash表中作为Key使用时,必须重写这个方法。ToString:默认返回类型的完整名称(this.GetType().FullName),这个方法在继承类中经常都会被重写,如Int32,Boolean。ToStri 阅读全文

VS编译时会将引用参照的dll所引用的子dll一起拷贝

2011-06-01 16:20 by xiashengwang, 600 阅读, 收藏, 编辑
摘要: 今天发现一个很“怪异”的现象,用VS2008编译一个工程后,发现SVN目录的某些文件(几个dll文件)又变回以前的版本了,以为是SVN出了问题,重启机器后还是有这个问题。我的VS2008工程的输出路径是指向svn的本地拷贝路径的(这样,有修改了,就可以上传最新的程序),经过一番检查,发现不是SVN的问题,是VS2008编译的问题。工程中引用了一个Main.dll,每次编译都把它拷贝到输出目录,但Main.dll自身也引用了几个dll,在我的工程中只能看见一个Main.dll的引用,看不见它的子引用,当重新编译时,VS2008会将Main.dll引用的dll一起拷贝到svn目录,这样就出现了那个 阅读全文

vs2008安装部署工程制作教程

2011-05-19 12:22 by xiashengwang, 234 阅读, 收藏, 编辑
摘要: vs2008安装部署工程制作教程1. 新建一个Class Library, 例如Name 为 CustomAction. 这个就是一个自定义安装行为的类。2. 添加安装类。在新建的Library里面添加一个 Installer Class,名字我暂时定为MyInstallerClassDll 3. 重写基类的函数 Commit Install OnAfterInstall OnAfterRollback OnAfterUninstall OnBeforeInstall OnBeforeRollback OnBeforeUninstall OnCommitted OnCommitting Rol 阅读全文