17 ATField

尚未进行身份认证

目前在微软公司Common Language Runtime .NET Framework 的.NET Native Tool Chain Team工作,目前主要负责开发.NET Native相关技术

等级
博文 131
排名 3k+

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

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

2014-04-11 15:48:50

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

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

2009-09-03 17:13:00

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

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

2009-08-28 13:10:00

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

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

2009-08-25 13:50:00

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

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

2009-08-20 09:57:00

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

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

2009-06-17 17:33:00

CLR 4.0 Beta1新功能:Stub Method Redirection

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

2009-06-17 13:28:00

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

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

2009-05-19 21:22:00

Visual Studio 2010 + .NET 4.0Beta1发布!

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

2009-05-19 19:21:00

Visual Studio Team System 2010 Architecture系列文章

微软上海VSTeamArch小组的中文Blog上面最近开始了一个系列文章,主要翻译CameronSkinner的一系列介绍VisualStudioTeamSystem2010ArchitectureCTP的一些新功能的Blog,目前有下面两篇:VSTS2010Architecture第一章:ModelingProjectVisualStudioTeamSyst

2009-04-29 19:47:00

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

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

2009-04-15 21:28:00

.NET 4.0新功能:Corrupted State Exceptions

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

2009-03-30 23:11:00

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

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

2009-03-30 22:22:00

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

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

2009-03-16 22:31:00

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

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

2009-03-13 15:53:00

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

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

2009-02-16 21:50:00

System.Runtime.InteropServices.GetHRForException的陷阱

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

2009-01-07 23:10:00

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

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

2009-01-07 17:18:00

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

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

2008-12-30 21:30:00

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

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

2008-12-30 21:17:00
奖章
    暂无奖章