aev*_*tas 2 c# portable-class-library
我目前正在研究将面向WPF的库移植到PCL库的选项,以便它可以在多个平台上使用,特别是Windows应用商店应用程序.
据我所知,可移植类库引用了您所定位的平台上支持的.NET库的子集,并且仅限于以下程序集:
微软将以下内容添加到:
但是,并非所有平台都支持所有这些程序集.在可移植类库项目中,指定要定位的平台,并且在项目中仅引用这些平台支持的程序集.如果您尝试引用您所针对的平台不支持的程序集,Visual Studio会警告您不兼容.所有平台都支持核心程序集(mscorlib.dll,System.dll,System.Core.dll和System.Xml.dll).
现在,在制作PCL库时,我得到的唯一参考是.NET Portable Subset,我无法添加任何引用; VS会告诉我已经添加了所有可能的引用.
现在我的问题很简单:什么时候确定实际的参考文献,谁决定这些?它是由编译器在编译时完成的,还是CLR在运行时完成的?
何时确定实际参考文献,
当然,在运行时,唯一可以发现代码实际运行的时间,例如Silverlight.
谁决定这些?
CLR.它将已编译装配体内的可重定目标装配参考映射到机器上可用的混凝土装配体.重定向是后来CLR版本的通用功能,例如,如何在.NET 4.0程序中使用.NET 2.0程序集.即使它引用了mscorlib版本2.0.0.0,但运行4.0.0.0
在PCL库中大致相同,它将针对mscorlib.dll的2.0.5.0版本,这个版本实际上并不存在.这个伪程序集引用由您编译程序的引用程序集生成.它们存储在c:\ program files(x86)\ reference程序集中.编译器不知道版本是否真实.有许多参考组件集,称为配置文件,设计用于仅公开您希望在目标计算机上使用的类型.当你启动一个PCL项目然后你选择目标并自动选择正确的配置文件,一组参考程序集中的一个集合可以保证在你选择的任何目标上工作.您选择的目标越多,您在库代码中可以使用的类型就越少.
这种重定向当然只能用于"已知"组件,CLR已预先建立了如何映射的知识.这就是为什么你不能添加一个任意的框架程序集引用,没有希望CLR在运行时将它映射到正确的框架程序集.最重要的是,它几乎没有希望机器上真正可用.
| 归档时间: |
|
| 查看次数: |
1009 次 |
| 最近记录: |