
.NET
文章平均质量分 63
ATField
目前在微软公司Common Language Runtime .NET Framework 的.NET Native Tool Chain Team工作,目前主要负责开发.NET Native相关技术
展开
-
WPF/E简介
WPF/E是微软下一代Web平台的核心技术,跨平台(支持Windows和Mac),可以在多种浏览器中运行,会自动下载一个很小只有数M的客户端来运行WPF/E代码:WPF/E简介:http://msdn2.microsoft.com/en-us/library/bb190634.aspxWPF/E入门教程:http://www.microsoft.com/china/MSDN/library原创 2007-03-24 13:32:00 · 2191 阅读 · 0 评论 -
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 · 3529 阅读 · 0 评论 -
MSDN文档的错误:关于UnmanagedType.LPStruct和UnmanagedType.Struct
在MarshalAsAttribute中,第一个参数类型是UnmanagedType枚举,用以指定对应的非托管数据类型。在这个枚举类型中,有两个非常诡异的值,Unmanaged.LPStruct和UnmanagedType.Struct。对于这两个枚举值,在MSDN文档中是这么讲的: Struct A VA原创 2008-10-05 14:32:00 · 4388 阅读 · 0 评论 -
.NET组件的注册表中RuntimeVersion的作用
使用过COM来访问.NET组件的朋友们应该都会注意到在对应注册表中有一个RuntimeVersion的键值: 这个RuntimeVersion的命名很容易让人误认为RuntimeVersion是用来指定该.NET组件所应该运行的CLR的版本号。实际上,这个键值的意思和字面上不是特别一致。如果我们考虑一个情况:首先,进程中先创建一个.NET类型的实例,RuntimeVersion标记为1.1,原创 2008-12-30 21:17:00 · 5853 阅读 · 0 评论 -
System.Runtime.InteropServices.GetHRForException的陷阱
从字面上看,GetHRForException函数的作用很简单:得到Exception所对应的HRESULT的值。但是,GetHRForException还会做一件事情:设置当前线程的IErrorInfo使之指向该Exception(严格来说是获得Exception的CCW中的IErrorInfo接口指针)。如果对IErrorInfo不熟悉的朋友们可以把IErrorInfo看成COM版本的GetL原创 2009-01-07 23:10:00 · 5577 阅读 · 0 评论 -
.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 · 2521 阅读 · 1 评论 -
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 · 6364 阅读 · 0 评论 -
预告:公共语言运行库(CLR)开发系列课程(4):COM Interop进阶
这次我主要讲RCW的原理,生命周期,引用计数,套间,System.__ComObject,事件调用原理等内容。CCW由于时间限制就不涉及了,毕竟大家还是以使用RCW为主。 感兴趣的朋友可以在下面注册: 公共语言运行库(CLR)开发系列课程(4):COM Interop进阶 (Level 300) 讲 师:张羿 课程简介:本次课程我们将介绍.NET调用COM组件上使用上的一些常见问题,特原创 2009-02-16 21:50:00 · 5473 阅读 · 2 评论 -
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 · 6900 阅读 · 0 评论 -
使用.NET/CLR的Stress Log功能寻找问题
不知道各位使用.NET开发的朋友是否有遇到过一些非常奇怪的问题而不知道如何下手呢?这个时侯CLR本身提供的StressLog功能就非常有用了。这个StressLog可以在很多时候把CLR所做的事情记录下来,比如,对于一个很简单的最后抛出异常的.NET程序Log大致如下: STRESS LOG: facilitiesToLog = 0x原创 2009-04-15 21:28:00 · 7246 阅读 · 0 评论 -
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 · 9373 阅读 · 20 评论 -
Shared Source CLI essentials 第二版将免费
这其实已经不是新闻了但是我还是觉得应该提一下。Shared Source CLI essentials这本书是市面上唯一讲解CLR内部实现的书籍,非常具有参考价值。现在这本书的作者正在编写第二版,而且准备将这本书用PDF和Word文档的方式免费放在网上供大家下载!现在已经有了一个初稿(Draft),有兴趣的朋友可以在这里下载: http://callvirt.net/files/Shared%2原创 2008-09-23 22:24:00 · 3692 阅读 · 3 评论 -
谈.NET中几个怪异的CustomAttribute
大家都知道AssemblyVersionAttribute是用来指定Assembly的版本号使用的,但是不知道你有没有考虑过这个问题:这个Attribute真的生成到了最后的Assembly中吗?我们建立一个简单的C#项目试一下便可以知道。在新建的C#项目中AssemblyInfo.cs缺省有如下的内容:原创 2008-02-20 23:01:00 · 4269 阅读 · 0 评论 -
如何调试托管代码(managed code)和非托管代码(native code)混合的项目
在调试同时存在托管代码和非托管代码的程序的时候,需要特别注意选用适当的调试器的类型。因为看到类似的问题问得比较多,因此这里把做法写出来。在托管项目中在调试之前,需要打开对非托管代码调试的功能,这个选项在项目的属性的Debug选项中存在:<v:shapetype id="_x0000_t75"coordsize="21600,21600" o:spt="75" o:preferrelat原创 2007-10-31 23:48:00 · 5657 阅读 · 2 评论 -
PIA (Primary Interop Assembly) & AIA (Alternate Interop Assembly)简介
当用.NET调用已有的COM组件的时候,一般需要使用tlbimp导入COM组件的TypeLibrary信息,生成对应的Interop Assembly。所谓PIA (Primary Interop Assembly),则是“官方”发布的对于某个COM组件的.NET DLL。比如微软公司发布了Office 2003的COM组件,可以用于操作COM,同时,微软也发布了Office 2003所对应的PI原创 2007-04-12 23:42:00 · 3886 阅读 · 0 评论 -
Microsoft Silverlight正式发布
微软在4月15号(美国时间)的NAB(National Associates of Broadcasters)会议上宣布WPF/E正式更名为Microsoft Silverlight。Silverlight是跨浏览器,跨平台(目前只支持Windows/Mac)的多媒体交互解决方案。Sliverlight的相关资源:· http://www.microsoft.c原创 2007-04-17 21:42:00 · 2576 阅读 · 0 评论 -
.NET Interop: 从IErrorInfo错误对象获得托管代码的异常信息
当调用IDispatch::Invoke函数的时候,当函数调用过程中抛出了异常,Invoke函数会返回DISP_E_EXCEPTION,代表异常发生。Invoke函数的pExceptionInfo参数可以提供关于异常的有关信息: IDispatch *pDisp; EXCEPINFO原创 2007-04-18 21:25:00 · 2755 阅读 · 0 评论 -
手动生成C#的COM包装类的常见问题和解决办法
看一下如下代码: [Guid("25088995-7924-4B15-B01A-EA7C422ADC68")] public class CHelloClass : IHello { [Dis原创 2007-05-14 12:38:00 · 5512 阅读 · 0 评论 -
.NET/CLR好书推荐
最近一直在看CLR方面的书籍,发现了几本不错的书,于是整理一下自己的感受放上来,希望能够对大家选择合适自己的书有所帮助。 1. CLR via C#, 2nd Edition这本书不用我多说了。Jeffrey Richter的经典之作。条理清晰,深入浅出,绝对是学习.NET/CLR的必读。国内只有翻译版本。http://www.amazon.com/CLR-via-Seco原创 2007-08-16 00:34:00 · 8627 阅读 · 6 评论 -
.NET中的幕后英雄:MSCOREE.DLL
现在做.NET Framework的开发的朋友应该是越来越多了,但是可能并非人人都对MSCOREE.DLL非常了解。而事实上,毫不夸张地说,MSCOREE.DLL是.NET Framework中最为核心的DLL之一,没有这个DLL,托管程序根本无法开始执行起来,但是由于这个DLL藏在System32目录下,根本无人问津,可以说是有点委屈了这位.NET Framework中的幕后英雄。本文主要讨论M原创 2007-08-19 23:46:00 · 26323 阅读 · 18 评论 -
走近Silverlight - 微软Silverlight上海开发团队Blog第二篇
Silverlight上海开发团队Blog第二篇,是对Silverlight技术的一个比较全面的介绍。本文转自http://blog.youkuaiyun.com/SilverlightShanghai/archive/2007/08/21/1753258.aspx如果有对于Silverlight技术本身的疑问,看法,意见,建议,或者是对于希望看到Blog的内容有建议,请访问http://blog.csdn.转载 2007-08-21 21:02:00 · 3137 阅读 · 0 评论 -
.NET SDK中CorFlags.Exe的用法
CorFlags是.NET Framework中一个用于查看.NET 可执行文件(PE)的运行参数的非常有用的工具,但是这个工具输出的结果不是特别直观,文档中并没有做出解释,本文将用实际例子解释CORFLAGS的用法。首先我们来看一个一般的情况,随便写一个A.CS文件,用CSC编译,并用CorFlags察看原创 2007-10-07 21:48:00 · 9963 阅读 · 1 评论 -
微软宣布将发布.NET Framework Library源代码
(翻译整理自Scott Guthrie的Blog:http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx)在早些时候,也就是10月3号,微软宣布将随.NET Framework 3.5和VS 2008同时发布BCL的源代码,以翻译 2007-10-04 12:31:00 · 3302 阅读 · 2 评论 -
.NET Main函数参数解释过程和特殊规则
最近正在准备一个小型开发工具的发布工作(具体的内容请容我先卖个关子,等发布之后我会详细给大家介绍的)。在使用时不经意中发现,使用.NET开发的命令行工具的对引号和反斜杠 /和一般命令行程序有着不同的解释规则。举例来说,如果你在命令行下输入: C:/> tool “C:/Progr原创 2007-10-28 23:35:00 · 4264 阅读 · 1 评论 -
.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 · 44582 阅读 · 89 评论