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