Browse by Tags
一次 Reboot=975 年 在开始本文之前先做一个小调查:有多少朋友喜欢Reboot?答案A:我喜欢,每天都要Reboot N次。答案B:我不喜欢,最好一个星期都不要Reboot。如果没有意外的话,相信大部分人都可以归到B那一类,毕竟很少人会愿意中断自己所做的事情,把正在编辑的文章、代码等等一一存盘,然后重新启动,等待几分钟,再重新打开文档、代码编辑的。 不过,很遗憾的是,新版本的.NET的安装在Vista以及以上(以后用Vista+表示)操作系统中安装通常是需要重新启动的,2003,XP或者以下则是不需要的。看到这里可能有些朋友会很奇怪:为什么XP不用重启,Vista反而要重启呢?这不是变差了吗?谈这个问题,必须要从Mscoree.dll谈起。大部分使用.NET编程的朋友可能并不熟悉mscoree.dll,但是,实际上mscoree.dll可以说是.NET/CLR中最为核心的一个部件之一,没有Mscoree,CLR根本无从加载。当你在执行一个.NET得EXE的时候,最先加载的不是CLR的DLL(mscorwks.dll),而是这个Mscoree.dll。详情可以参见我之前写过的一篇文章:
Read More...
我们先来看一个在Outlook上运行.NET插件的一个情景。暂时机器上面安装的是CLR v1.1,Outlook上运行了一个Addin,在v1.1上编写和测试完毕,运行良好。之后,用户在机器上面安装v2.0。因为Outlook采取的方式是总是启动最新的.NET Framework(这也是有原因的,因为Outlook希望能够运行所有的版本的.NET Addin),Outlook自动会运行CLR v2.0(包括.NET Framework v2.0,v3.0, v3.5)。因为v2.0和v1.1之间并不是100%兼容,v1.1上编写的Addin在v2.0的CLR将有可能无法正确执行。也就是说,安装了一个新版本的.NET
Read More...
什么是契约 我们先来看一个很简单的例子: Void WordList.Insert(string word) 这个函数负责将word以升序插入到WordList中的单词列表中,word不可以为NULL。 上面这些说明文字都是用来描述此函数的行为的。当使用该函数的调用者看到这些说明文字的时候,便知道函数应该如何调用以及在不同情况下的函数行为,换言之,上面这段说明文字简单的描述了函数调用者和被调用者的一种约定,这种约定也被称之为契约(Contracts)。契约一般来讲可以分成三类,包括: 1. Precondition:函数调用之前需要满足何种条件:比如,参数word不可以为NULL
Read More...
在.NET Framework v4.0发布的新功能中,在名字空间System.Runtime.InteropServices新增加了一个叫做ICustomQueryInterface的Interface, 顾名思义,这个Interface的功能就是使得用户可以自己控制QueryInterface这个COM最常用的函数的行为。在v4.0以前,所有作用于托管组件上的QI行为,都是由CLR内部的IUnkown:QueryInterface控制的,比如,如果你QI著名的IDispatch接口时,你得到的永远都是CLR提供的那个IDispatch,诸如此类的还有IMarshal/IProvideClassInfo等一些常用的Interface。如果你非常希望用自己的IDispatch实现来替换clr提供的实现,那么恭喜你,ICustomQueryInterface就是为你而生的!当然,ICustomQueryInterface所带来的,不仅仅是简单的Interface替换,它甚至可以使得Aggregate托管组件也成为现实,wow,如果你了解Aggregation的话,一定会因此而雀跃不已的。我会在另一篇文章中通过例程给大家做一个详细的介绍。
Read More...
在最新一期的.NET 4.0新特性系列课程中,我将继续给大家介绍CLR 4.0中的一些新特性。被次课程聚焦于性能,具体信息如下: MSDN Webcast - .NET 4.0中的新特性系列课程(5):追踪CLR——使用Windows事件跟踪(ETW)观察公共语言运行时CLR(Level 300) 讲 师: 朱永泰 开始日期: 2009年8月18日 14:30中国 课程简介:
Read More...
在公共语言运行时(CLR)过往的版本中,安全模型一直是最为复杂的模块之一,由于涉及Evidence,CAS策略等机制,难以被用户使用。在Silverlight中,CLR团队提出了三层安全级别,大大简化了安全模型,得到了很多积极的反馈。所以CLR4.0对之加以改进,希望能帮助用户开发出更为安全的应用程序。 三层安全级别及其运作机制 CLR4.0中的安全级别,从低到高排列如下: Transparent SafeCritical Critical 其运作机制如下图所示,可以用三个箭头加以说明: Transparent的代码可以调用SafeCritical的代码
Read More...
该工具主要帮助大家诊断Interop Marshalling中间遇到的问题。它的源代码和二进制文件可以在CodePlex上下载: http://clrinterop.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29745 本文首先介绍关于Interop Marshalling的背景,然后通过一个例子来介绍IL Stub Diagnostic工具的使用。 Interop Marshalling: 当我们在托管代码中调用本地代码或者反过来在本地代码中调用托管代码的时候,我们就在做.Net
Read More...
在最新一期的.NET 4.0新特性系列课程中,我们将继续给大家介绍CLR 4.0中的一些新特性,具体信息如下: MSDN Webcast - .NET 4.0中的新特性系列课程(4):.NET 4.0 安全模型介绍(Level 200) 讲 师: 朱永泰 开始日期: 2009年7月21日 14:30中国 课程简介: CLR 4在安全领域的主要工作室简化安全模型,以便让用户可以更方便的使用。本次讲座会从CLR对自身在整个安全架构的定位谈起,介绍如何提供一个安全沙箱(SandBox),来构筑应用程序
Read More...
在最新一期的.NET 4.0新特性系列课程中,我们将给大家介绍Beta1中的一些新特性,具体信息如下: .NET 4.0中的新特性系列课程(3):.NET 4.0 Beta1 Interop 新特性介绍 (Level 200) 讲 师: 张羿、朱永泰 课程简介: .NET 4.0 Beta1在Interop,也就是互操作功能上有了较大的改进,主要是能够帮助开发者更自由的自定义互操作的行为,以及查找互操作中出现的错误。这次讲座我们主要介绍4个新特性:NOPIA、Customization
Read More...
.NET Framework v4.0和VisualStudio 2010 Beta1已经出来有阵子了,估计有些喜欢尝鲜的朋友已经下载试用了。这一次发布包含了大量的新功能。我们上海CLR开发团队会编写一系列的文章介绍Interop的相关新功能。我来给大家简单介绍一下Stub Method Redirection功能。这个功能是CLR上海开发团队设计、开发并测试的新功能之一,这一次我们上海CLR小组共开发了下面几个功能 1. Managed TlbImp (Rewrite) 2. Stub Method
Read More...
.NET 4中发布了最新版本的公共语言运行时,简称CLR (Common Language Runtime) 。这个版本是CLR 2.0之后又一个新的版本,包含着CLR小组几年以来的辛勤工作。 CLR上海团队计划在未来的几个月内陆续介绍其中的一些特性,本文作为一个概览,先作蜻蜓点水,抛砖引玉。也欢迎大家回复本文,告诉我们你所感兴趣的话题,我们会进一步作深入的介绍。 CLR 简介 CLR作为.NET框架中最为底层的部件,扮演着运行托管代码虚拟机的角色,承担着诸如即时编译(Just In Time Compile),垃圾回收(Garbage
Read More...
1. 字符串Marshalling基础 在本地代码中,字符串按编码可分为ASNI字符串和Unicode字符串,按实现不同,可分为LPSTR(char*,wchar*)和BSTR。 在托管代码中,与字符串相关的有String,stringBuilder两个。 为了实现本地代码与托管代码中字符串的相互转换,Marshalling 引入了几个属性值。 BSTR系列 UnmanagedType.AnsiBStr UnmanagedType.BStr [COM Interop中为默认值] UnmanagedTYpe.TBStr
Read More...
Visual Studio 2010和.NET 4.0的Beta1版本终于发布了!目前Beta1还只是对MSDN的订阅者开放,到美国时间20日星期三,也就是我们的21日星期四的时候,Visual Studio 2010 / .NET 4.0 Beta1将公开对外发布。这个版本是可以安装的Setup,而非上次的虚拟机镜像,因此对于大家的机器要求会放松一些。想要观看安装图片的朋友们可以点击这篇Blog: http://www.itsmywindows.com/visual-studio-2010-first-look-installation
Read More...
最近在论坛上经常看到一些基本的interop的问题,给我动力写完之前的.net interop入门系列,给刚刚涉足.NET interop的朋友们一个大体上的概念。 每每谈及.NET interop,我的脑中总是出现下面一幅图: 该图代表了.net interop的四个典型场景。之前我的同事和我讨论了.NET和COM互操作的应用: 在.NET中调用COM: COM Interop入门 在COM中调用.NET: 在COM应用中使用.NET组件 , 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
Read More...
在刚刚结束的 Mix09大会 上(Mix是微软面向web开发者和设计者的会议),Silverlight团队的程序经理Joe Stegman介绍了silverlight3的许多让人兴奋的新功能,摘录如下: 1. 支持更多的媒体编码格式 在Silverlight3中新增加的多媒体编码格式包括H.264,AAC,MP4。Silverlight这项技术,从出生以来,就一直把对多媒体,尤其是视频的支持,放在首要位置。这次对更多的编码格式提供支持,方便网站建设者更容易的发布、部署视频资料,只需要如下一行XML:
Read More...