.NET/Mono里的跨平台类库

为了解决.NET/Mono生态系统的平台分化问题,微软开发了一个名为Portable Library Tools的扩展工具。这个工具允许相同的编译好的类库运行在.NET 4.0、Silverlight、Xbox 360和Windows Phone 7上。微软正在和Mono合作为MonoTouch和Mono for Android(译注:原文此处为MonoDroid,但由于版权方面的问题,MonoDroid已经更名为Mono for Android)提供支持。

在创建一个新的“可移植类库”时,开发者需要决定这个类库将会运行在哪些框架上。一旦做出了选择,只有那些在所有选择的平台上都能用的API才可以使用。具体可用的类和方法列表可以在Visual Studio的Object Browser里看到。

.NET/Mono里的跨平台类库_第1张图片

Portable Library Tools要求项目引用一组特殊的类库,而不是通常和平台相关的那些类库。受平台支持的API列表和API的更改可以在MSDN上找到。Mono for Android和MonoTouch的API没有显示出来,根据David M. Kean的说法,这些会在以后提供支持。

这个工具并非支持所有.NET/Mono平台。举个例子,“没有任何计划为.NET Compact(在Windows Phone和Xbox之前的)或者.NET Micro框架提供支持”。也不会为旧版本的全功能的.NET框架提供支持,因为这需要对运行时进行很大的改动。

这个工具的一个重要限制是你只能访问所有选择的平台都支持的API。这意味着你无法像为每个目标平台创建独立的DLL那样,通过编译器常量有选择性地启动某些特性。微软正在研究通过反射和迟绑定来“开启”额外特性的可行性,但至今没有任何明确的计划。

查看英文原文:Cross Platform Libraries in .NET/Mono

你可能感兴趣的:(.NET/Mono里的跨平台类库)