自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张羿的CSDN专栏

正在开发.NET Native

  • 博客(131)
  • 收藏
  • 关注

原创 .NET直接编译成本地代码:.NET Native架构简介

这篇Blog好久没有更新了。最近一直在忙.NET Native相关的事情(主要是MCG),但是又因为保密的原因不能在Blog中提到。上个星期Build终于发布(可惜没有去成,team名额太少),我也终于可以谈下.NET Native的一些东西了,呵呵。如果大家还没有看到之前的发布信息,可以去下面几个网址看看:http://msdn.microsoft.com/en-US/v

2014-04-11 15:48:50 44080 89

原创 .NET 4.0新功能:Mscoree.dll + Mscoreei.dll=更少的Reboot (上)

一次Reboot=975年 在开始本文之前先做一个小调查:有多少朋友喜欢Reboot?答案A:我喜欢,每天都要Reboot N次。答案B:我不喜欢,最好一个星期都不要Reboot。如果没有意外的话,相信大部分人都可以归到B那一类,毕竟很少人会愿意中断自己所做的事情,把正在编辑的文章、代码等等一一存盘,然后重新启动,等待几分钟,再重新打开文档、代码编辑的。 不过,很遗憾的是,新版本的.NET的安

2009-09-03 17:13:00 8368 3

原创 如果一个程序跑10000次只失败一次,你会怎么调试?

CLR小组中存在着大量的回归测试,这些回归测试会定期执行来发现CLR中的Bug,Developer在Checkin之前,也需要执行这些测试的一部分(大概是10小时左右,如果全部跑的话估计要好几天)。这些测试对于保证CLR的质量是至关重要的。有时候,这些测试会偶尔失败,比如跑100次失败大概一到两次,有些极端的例子甚至是10000次才失败一次。像这种问题通常是很难调试的。在前面调试Bug的神兵利器:

2009-08-28 13:10:00 31913 46

原创 .NET 4.0新功能介绍:In Process Side By Side

我们先来看一个在Outlook上运行.NET插件的一个情景。暂时机器上面安装的是CLR v1.1,Outlook上运行了一个Addin,在v1.1上编写和测试完毕,运行良好。之后,用户在机器上面安装v2.0。因为Outlook采取的方式是总是启动最新的.NET Framework(这也是有原因的,因为Outlook希望能够运行所有的版本的.NET Addin),Outlook自动会运行CLR v2

2009-08-25 13:50:00 7148 1

原创 .NET 4.0中的新功能介绍:契约式设计 (Design By Contracts)

什么是契约 我们先来看一个很简单的例子: Void WordList.Insert(string word) 这个函数负责将word以升序插入到WordList中的单词列表中,word不可以为NULL。 上面这些说明文字都是用来描述此函数的行为的。当使用该函数的调用者看到这些说明文字的时候,便知道函数应该如何调用以及在不同情况下的函数行为,换言之,上面这段说明文字简单的描述了函数调用者和被

2009-08-20 09:57:00 25918 22

原创 MSDN Webcast预告:.NET 4.0中的新特性系列课程(3):.NET 4.0 Beta1 Interop 新特性介绍 (Level 200)

在最新一期的.NET 4.0新特性系列课程中,我和我的同事将给大家介绍Beta1中的一些新特性,具体信息如下: .NET 4.0中的新特性系列课程(3):.NET 4.0 Beta1 Interop 新特性介绍 (Level 200) 讲 师:张羿、朱永泰  课程简介:.NET 4.0 Beta1在Interop,也就是互操作功能上有了较大的改进,主要是能够帮助开发者更自由的自定义互操作的

2009-06-17 17:33:00 7019

原创 CLR 4.0 Beta1新功能:Stub Method Redirection

.NET Framework v4.0和VisualStudio 2010 Beta1已经出来有阵子了,估计有些喜欢尝鲜的朋友已经下载试用了。这一次发布包含了大量的新功能。我们上海CLR开发团队会编写一系列的文章介绍Interop的相关新功能。我来给大家简单介绍一下Stub Method Redirection功能。这个功能是CLR上海开发团队设计、开发并测试的新功能之一,这一次我们上海CLR小组

2009-06-17 13:28:00 7302 1

原创 MSDN中文网络广播预告:公共语言运行库(CLR)开发系列课程(6):.NET中间语言(IL)入门 (Level 200)

这个星期三也就是5月19日下午2点半开始我将为大家带来CLR开发课程系列之六。这一次我打算讲一些.NET比较本质的内容:Metadata和IL代码。欢迎希望对.NET的运作机理和工作方式能够有进一步深入了解的朋友收听。本次讲座的具体信息如下: 公共语言运行库(CLR)开发系列课程(6):.NET中间语言(IL)入门 (Level 200) 讲 师:张羿  课程简介:.NET本质上是一个执行

2009-05-19 21:22:00 6084 1

原创 Visual Studio 2010 + .NET 4.0Beta1发布!

Visual Studio 2010和.NET 4.0的Beta1版本终于发布了!目前Beta1还只是对MSDN的订阅者开放,到美国时间20日星期三,也就是我们的21日星期四的时候,Visual Studio 2010 / .NET 4.0 Beta1将公开对外发布。这个版本是可以安装的Setup,而非上次的虚拟机镜像,因此对于大家的机器要求会放松一些。想要观看安装图片的朋友们可以点击这篇Blog

2009-05-19 19:21:00 9313 20

原创 Visual Studio Team System 2010 Architecture系列文章

微软上海VS TeamArch小组的中文Blog上面最近开始了一个系列文章,主要翻译Cameron Skinner的一系列介绍Visual Studio Team System 2010 Architecture CTP的一些新功能的Blog,目前有下面两篇: VSTS 2010 Architecture 第一章:Modeling Project Visual Studio Team Syst

2009-04-29 19:47:00 8703 4

原创 使用.NET/CLR的Stress Log功能寻找问题

不知道各位使用.NET开发的朋友是否有遇到过一些非常奇怪的问题而不知道如何下手呢?这个时侯CLR本身提供的StressLog功能就非常有用了。这个StressLog可以在很多时候把CLR所做的事情记录下来,比如,对于一个很简单的最后抛出异常的.NET程序Log大致如下: STRESS LOG: facilitiesToLog = 0x

2009-04-15 21:28:00 7137

原创 .NET 4.0新功能:Corrupted State Exceptions

在.NET 4.0中引入了一个新功能:Corrupted State Exceptions。听上去名字很神秘,实际上这个功能主要是限制对Exception的错误用法:捕获AccessViolationException/SEHException等可能会造成程序状态错误而无法正确继续的种种异常,具体可以参看CLR程序经理Andrew Pardoe的这篇MSDN文章:http://msdn.micro

2009-03-30 23:11:00 6137 1

原创 调试Bug的神兵利器:通过WinDbg条件断点收集Log

前段时间花了几天一直在用WinDbg调试一个比较棘手的Bug。这个Bug是C# Team那边发现的,他们的Testcase跑大概10分钟左右会出一个在CLR内部的ASSERT。比较难调试的主要原因在于ASSERT表明一个全局的数据结构出现了问题,本来不应该用完的数组却已经用完了(因为按照设计,这个数组是边使用边清理的,是不会用完的)。初步想到的有下面几种方案来调试: 1. 设置数据断点 2.

2009-03-30 22:22:00 13309 4

原创 MSDN中文网络广播预告:.NET 4.0新特性系列课程(2):契约式设计 (Level 200)

这次我将为大家讲解如何使用.NET 4.0中的契约式设计(也可以在.NET 2.0+中使用,需要额外下载安装包),欢迎有兴趣的朋友收听。 地址为:http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032406872&Culture=zh-CN .NET 4.0中的新特性系列课程(2):契约式设计 (Level 200) 讲

2009-03-16 22:31:00 5658 1

原创 CodePlex上TlbImp新版本发布:基于规则的自定义功能

大家好。距离上次我们发布在CodePlex上的新版本TlbImp已经过了快半年了。在这半年的时间内,除了主要进行.NET 4.0相关的新功能开发之外,我们上海CLR小组也没有忘记进行TlbImp相关功能的继续开发,于今年3月9日再次发布了TlbImp的一个新版本: http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?Re

2009-03-13 15:53:00 6783

原创 预告:公共语言运行库(CLR)开发系列课程(4):COM Interop进阶

这次我主要讲RCW的原理,生命周期,引用计数,套间,System.__ComObject,事件调用原理等内容。CCW由于时间限制就不涉及了,毕竟大家还是以使用RCW为主。 感兴趣的朋友可以在下面注册: 公共语言运行库(CLR)开发系列课程(4):COM Interop进阶 (Level 300) 讲 师:张羿  课程简介:本次课程我们将介绍.NET调用COM组件上使用上的一些常见问题,特

2009-02-16 21:50:00 5407 2

原创 System.Runtime.InteropServices.GetHRForException的陷阱

从字面上看,GetHRForException函数的作用很简单:得到Exception所对应的HRESULT的值。但是,GetHRForException还会做一件事情:设置当前线程的IErrorInfo使之指向该Exception(严格来说是获得Exception的CCW中的IErrorInfo接口指针)。如果对IErrorInfo不熟悉的朋友们可以把IErrorInfo看成COM版本的GetL

2009-01-07 23:10:00 5514

原创 Vista上远程管理Hyper-V服务器

因为工作需要,我把自己的一台机器装上了Windows Server 2008并配置好了Hyper-V,用来Host我的一些虚拟机。但是我一般远程访问这台服务器,管理虚拟机起来不太方便,特别是在虚拟机上还没有安装好Integration Services更是如此。因此我经常用HyperV为Vista发布的一款MMC来远程管理我的虚拟机。这个MMC包含在Vista SP1 Managed Tools

2009-01-07 17:18:00 5460

原创 【预告】1月6日下午14:30 CLR开发系列课程(3):COM Interop基础 (Level 300)

1月6日下午14:30我将在MSDN中文网络广播中主讲.NET中COM和COM Interop的相关基础知识。有兴趣的朋友可以通过下面的链接登记并收听此次网络广播:  公共语言运行库(CLR)开发系列课程(3):COM Interop基础 (Level 300) 讲 师:张羿  课程简介:从本次课程开始,今后几次课程将围绕COM和COM Interop技术,展开对托管代码和非托管代码之间通

2008-12-30 21:30:00 5460

原创 .NET组件的注册表中RuntimeVersion的作用

使用过COM来访问.NET组件的朋友们应该都会注意到在对应注册表中有一个RuntimeVersion的键值: 这个RuntimeVersion的命名很容易让人误认为RuntimeVersion是用来指定该.NET组件所应该运行的CLR的版本号。实际上,这个键值的意思和字面上不是特别一致。如果我们考虑一个情况:首先,进程中先创建一个.NET类型的实例,RuntimeVersion标记为1.1,

2008-12-30 21:17:00 5755

原创 [预告] 12月9日下午 - MSDN中文网络广播:.NET 4.0 Interop新特性-Type Equivalency

12月9日下午我将在MSDN中文网络广播中主讲.NET 4.0 CTP中Interop的新特性:Type Equivalency,又称之为NO PIA。 有兴趣的朋友可以通过下面的链接登记并收听此次网络广播: .NET 4.0中的新特性系列课程(1):等价类型(Type Equivalency) (Level 200) 讲 师:张羿  课程简介:在.NET 4.0之前,为了解决不同的In

2008-12-07 12:44:00 2273

原创 Marshal.SizeOf和sizeof的区别

Sizeof在非Unsafe环境下只能用于预定义的一系列类型,如Int,Short等等。而在Unsafe环境下,sizeof可以被用于值类型,但是值类型中不可以有引用类型,否则C#编译器会报错: error CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type (S

2008-11-29 22:32:00 6292

原创 诡异的C++ #define编译错误

前几天写代码的时候遇到了一个十分诡异的编译错误。对于下面的代码,你能够发现问题在那里吗? 1: #define test(a, b, c) / 2: a; / 3: if (b) / 4: c 编译器给出

2008-11-29 22:26:00 3558 6

原创 .NET 4.0: Type Equivalency (2) - 内嵌类型

上次我们谈到了.NET 4.0中为什么要引入Type Equivalency这样一个新功能,这次我们来看一个比较简单的一个程序: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Micros

2008-11-24 23:49:00 2463 1

原创 .NET 4.0: Type Equivalency (1) – Byebye,PIA

在.NET 4.0 CTP中,最引人注目的Interop的改进当属Type Equivalency,又称之为NO PIA。在介绍如何使用这个新特性之前,我觉得还是应该从历史讲起,探究我们究竟要解决什么样子的问题,过去采用了什么样的解决办法,以及这些办法都有那些问题。 在.NET中,为了访问COM对象,需要定义一系列托管的Interface、Struct、以及class。有了类型库(TypeLib

2008-11-03 22:38:00 3563 2

原创 Microsoft PDC 2008 Talk在线观看和下载地址

官方的所有Session的列表:https://sessions.microsoftpdc.com/public/timeline.aspx Channel 9:http://channel9.msdn.com/pdc2008/ 两个大致差不多,前面那个可以比较方便的查看所有的Session,也可以下载,或者转到Channel 9的直接在线看,就是感觉在点击Session的时候页面相应速度慢点

2008-11-02 23:56:00 1906

原创 VS 2010 & .NET 4.0 CTP下载地址(10/31放出)

http://www.microsoft.com/downloads/details.aspx?FamilyID=922b4655-93d0-4476-bda4-94cf5f8d4814&DisplayLang=en 有11个RAR分卷压缩文件,解压缩之后大小为23G的一个VHD文件,还是相当大的,需要使用Virtual PC加载。 在.NET 4.0 CTP中CLR Interop的新功能是

2008-11-02 00:42:00 6352 11

原创 PDC:Anders谈C# 4.0:新功能和展望

刚才刚看完Anders的PDC Talk,感觉C# 4.0的变化不是很大,但是很多改动都方便了用户的使用,有些甚至当初Anders本来不愿意加入的功能最后由于用户的呼声最后还是加进去了(如Optional Parameters),可见Anders对用户的意见还是非常重视的。稍微总结一下,C# 4.0中有下面这些功能: 1. dynamic/IDynamicObject 这个改进使得C#向动

2008-11-01 23:27:00 15157 66

原创 PDC: COM Interop新功能:Type Equivalency / NO PIA

在PDC上,Misha Shneerson和Andrew Whitechapel的Session:Under the Hood: Advances in the .NET Type System中披露了.NET 4.0中Interop的新功能:Type Equivalency,而内部我们都将这个Feature称之为NO PIA(Primary Interop Assembly)。这个Feature

2008-10-30 09:08:00 2127

原创 TlbImp新版本发布:/v2 & /preserveSig

两个星期之前CLR Interop小组再次发布了TlbImp的新版本。本来是早就应该写篇Blog介绍一下的,只是一直忙于CLR Interop新功能开发,难以抽出时间。这次版本添加了两个小功能: 1. /v2开关 在新版本的TlbImp中,我们不能随意改变新版本的行为,以避免当用户采用新版本的时候产生兼容性问题而导致程序编译出错,或者行为不正确。这个开关是用来告诉TlbImp采用新版本的行为,

2008-10-25 21:42:00 1911

原创 ATL:IDispatchImpl, IDispEventImpl, IDispEventSimpleImpl的区别和联系

这几个类都和IDispatch的实现有关系,但是他们提供的IDispatch的实现是不同的。 IDispatchImpl只能用于双接口(Dual Interface)的实现。IDispatchImpl本身的IDispatch接口实现是使用ITypeInfo::Invoke的。ITypeInfo简单来说是一个代表TypeLibrary中一个类型的COM对象,比如某个interface IA。而IT

2008-10-05 22:31:00 5621

原创 MSDN文档的错误:关于UnmanagedType.LPStruct和UnmanagedType.Struct

在MarshalAsAttribute中,第一个参数类型是UnmanagedType枚举,用以指定对应的非托管数据类型。在这个枚举类型中,有两个非常诡异的值,Unmanaged.LPStruct和UnmanagedType.Struct。对于这两个枚举值,在MSDN文档中是这么讲的: Struct A VA

2008-10-05 14:32:00 4241

原创 TlbImp源码在CodePlex公开!欢迎下载

对.NET中COM Interop比较熟悉的朋友应该都对TlbImp比较了解了。这个工具是专门用来将Type Library(类型库)转换成对应的Interop Assembly,以便在.NET程序中使用对应的COM组件。这个Interop Assembly中主要包含RCW(Runtime Callable Wrapper)的Metadata(而非源代码。RCW的实现其实是在CLR内部),以及部分

2008-09-25 23:25:00 3467

原创 Shared Source CLI essentials 第二版将免费

这其实已经不是新闻了但是我还是觉得应该提一下。Shared Source CLI essentials这本书是市面上唯一讲解CLR内部实现的书籍,非常具有参考价值。现在这本书的作者正在编写第二版,而且准备将这本书用PDF和Word文档的方式免费放在网上供大家下载!现在已经有了一个初稿(Draft),有兴趣的朋友可以在这里下载: http://callvirt.net/files/Shared%2

2008-09-23 22:24:00 3623 3

原创 【预告】我主讲的MSDN Webcast之二:公共语言运行库(CLR)开发系列课程(2):Pinvoke 进阶(Level 300)

下面是我主讲的MSDN Webcast:公共语言运行库(CLR)开发系列课程的第二讲P/Invoke进阶的链接,有兴趣的朋友可以在这里登记一下: http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032387495&EventCategory=4&culture=zh-CN&CountryCode=CN  

2008-09-06 15:17:00 1620 1

原创 微软CLR Interop Team的CodePlex主页上线!Interop Assistant代码公开!

经过一段时间的筹备,在Team的几位PM的共同策划之下,在CodePlex上面的CLR Interop主页终于上线了。CodePlex是微软公司开办的一个开源网站,上面的项目主要以.NET相关为主。我们CLR Interop Team决定在这里建立一个主页,专门用于存放内部成员所开发的Interop相关工具。主页的地址是:http://www.codeplex.com/clrinterop 可能

2008-06-17 20:44:00 2513 1

原创 什么是System.__ComObject: 强类型RCW和弱类型RCW

大家在进行COM Interop编程的时候,不知道]是否会见到这样的情况。通常,我们通过TlbImp.exe把一个类型库(Type Library)转换成Interop Assembly。比如在Type Library里面有一个coclass叫做MyComObject,那么在Interop Assembly中也存在一个MyComObjectClass这样一个托管类型。用户可以直接使用这个MyCom

2008-06-15 15:03:00 5036 1

原创 #import从.NET DLL生成的Tlb的神秘错误

经常看到有朋友问到类似的问题,问题本身不复杂,但是答案不是特别明显,这里我把解决方法Post出来和大家共享一下,希望能够有所帮助。 假设我们有下面的A.cs文件: using System; using System.Runtime.InteropServices;   [InterfaceType(ComInterfaceType.InterfaceIsDual)] public in

2008-03-05 22:52:00 4684

原创 位于上海的微软服务器与开发工具事业部的Blog已经开张,欢迎大家访问

微软在上海的研发中心的正式名称是服务器和开发工具事业部,主页的地址是:http://www.microsoft.com/china/CRD/groups05.mspx 而Blog的地址是:http://blogs.msdn.com/stbcblog/ 顺便为我们的部门作一下广告,呵呵。我目前所在的部门是服务器和开发工具事业部下面的Developers Division,简称为DevDiv。这个部

2008-03-05 20:23:00 4076 5

原创 现在中国的学生也可以免费使用微软公司的开发软件了:DreamSpark计划

现在中国的学生也可以免费使用微软公司的开发软件了: http://www.msuniversity.edu.cn/m_directdownload/introduction.aspx   1.什么是DreamSpark微软学生软件资源?    微软学生软件资源旨在为广大高校在校学生免费提供软件资源用于非商业性教学、科研以及创新实践;帮助高校学生开拓视野,扩展技能;助力高校培养创新实用型人才。 2.

2008-02-26 13:34:00 7507 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除