Cod*_*eIt 6 .net clr mono cil portable-class-library
有很多关于什么是PCL 这样的文章.
然而,从我发现的所有内容来看,他们大多只是说:
可移植库工具CTP为Visual Studio添加了一个新的"可移植类库"项目模板,可用于在C#和VB中创建在各种.NET平台上运行而无需重新编译的类库.
但仔细阅读这个关于.NET(和Mono)如何工作的精辟解释,我更加不清楚为什么PCL甚至需要它.
因为如果我构建了一些程序集并且它包含CIL字节码(可以通过任何其他平台使用(如果相应的平台具有CLR实现(作为.NET的主要思想))),那么问题是什么?为什么我们还需要PCL?
虽然IL可能相同,但可用的库不是.如果要定位台式计算机,Windows 8应用程序和Silverlight,则需要确保代码使用实际存在于所有这些位置的内容.
可移植类库确保您只使用适用于所选平台的那组库.
您可能希望在大约一年前阅读有关此.Net Framework博客的更多详细信息.
如前所述,PCL强制您只使用您所定位的所有平台上都存在的API.
此外,字节码是"可移植的",但.NET程序集包含对其他程序集的引用,并且在PCL支持出现之前,对.NET Framework API的引用在不同平台上使用不同的程序集标识.IE,对.NET Framework版本的System.dll的引用将具有与Windows Phone或Silverlight不同的版本号和强名称密钥.最重要的是,对于某些API(例如ICommand和HttpWebRequest),程序集的简单名称甚至不同.因此,您无法创建可移植到多个平台的程序集.
有关这方面的信息,请参阅我的答案:https://stackoverflow.com/a/16349673/1509