我需要添加和/或修改配置文件,以允许在PCL中共享更多的类和成员(其中许多是内置于框架中的,如Thread.Sleep).最好的方法是什么?有什么工具可以帮助吗?
PS:我不是在寻求告诉我不要或停止.我想拥有可以在不同环境中共享的一次编译DLL.没有每个平台的二进制文件,没有重新编译,没有ifdef.
以下是我到目前为止所得到的:
需求:
- 目标环境:Silverlight 5和.NET Framework 4.5.
- PCL的目的:RIA客户端和ASP.NET服务器共享基础架构(无WCF)
- 缺省配置文件缺少什么:XPath,Thread方法,DynamicMethod/ILGenerator
PCL配置文件:在Reference Assemblies\Microsoft\Framework.NETPortable下:
- 所有程序集都是存根,并设置了"Retargetable"属性.
- 所有程序集都有标志= 0x171:0x001已签名,0x100可重定向,并且在AssemblyNameFlags中未定义0x070(似乎无效)
- 程序集之间的所有引用都具有"Retargetable"属性.
- 支持Silverlight的所有程序集都是版本2.0.5.0.
- 构建的PCL二进制文件包含每个引用程序集的两个引用(例如:mscorlib 2.0.5.0 retargetable + mscorlib 4.0)
定制尝试#1
- 配置文件:Silverlight 5 + .NET Framework 4.5(配置文件24)
- 将SL5 mscorlib.dll复制到配置文件24
- 将SL5 mscorlib.dll标记为可重定向(更改为延迟签名)
- ReSharper:无法解析所有扩展方法,泛型类型/值匹配错误
- 构建:成功,运行:成功
定制尝试#2
- 配置文件:Silverlight 5 + .NET Framework 4.5(配置文件24)
- 将所有SL5 DLL复制到配置文件24
- 将所有SL5 DLL标记为可重定向(更改为延迟签名)
- 将SL5 DLL之间的所有引用标记为可重定向
- ReSharper:无法解析所有扩展方法,泛型类型/值匹配错误
- 构建:成功,运行:成功
定制尝试#3
- 配置文件:Silverlight 4 + .NET Framework 4.0.3(配置文件18)
- 将SL4 mscorlib.dll复制到个人资料18
- 将SL4 mscorlib.dll标记为可重定向(更改为延迟签名)
- ReSharper:成功
- 构建:成功,运行:成功
定制尝试#4
- 配置文件:Silverlight 4 + .NET Framework 4.0.3(配置文件18)
- 将所有SL4 DLL复制到配置文件18
- 将所有SL4 DLL的.NET运行时版本设置为v4(原始DLL具有该功能,未知的效果)
- 将所有SL4 DLL标记为可重定向(更改为延迟签名) …