我有一段代码可以编译Silverlight和.NET目标。这取决于Json.NET和SharpZipLib。我的目标是创建一个Silverlight和.NET项目可以链接的可移植库。
由于没有针对“portable-net40 + sl50”的SharpZipLib版本,我遇到了问题。
但是,如果我知道如何,我愿意自己编写包装代码。
那么:如何在与Silverlight链接时依赖Silverlight的SharpZipLib编写一个可移植的库,并且在与.NET链接时依赖.NET的SharpZipLib?
这是可能的还是微软可以做的事情?
答案 0 :(得分:2)
如果您的代码使用 SharpZipLib API的有限子集,您可以创建一个包含此API子集的“虚拟”PCL库,但不实现任何功能。
您必须做的是更改强名称(程序集名称和签名)以及现有.NET和Silverlight SharpZipLib 的版本:s与您的“虚拟”PCL相同< em> SharpZipLib 并重新编译平台特定的库。
使用这组程序集(PCL,.NET和Silverlight),您现在可以使用其他PCL库中的PCL库。在使用PCL库的平台特定应用程序中,您应该使用 SharpZipLib 库,您应该明确引用具有相同强名称和版本的平台特定 SharpZipLib 库作为PCL类似物。
您应该找到有关此技术的更多信息(“诱饵和开关”)here和here。 PCL Storage项目也是应用此技术的一个很好的例子。