可移植类库是否处理条件语句/引用

本文关键字:语句 引用 条件 处理 类库 是否 可移植 | 更新日期: 2023-09-27 18:22:08

我有一个类库,我使用两个链接项目和链接文件技术在.Net Framework和Silverlight之间共享。

我想把它转换成一个单独的可移植类库,但我有一点代码是不同的。我目前使用一个条件编译器语句来分离这个文件的实现。

#if SILVERLIGHT
...
#else
...
#endif

这会在PCL中获得荣誉吗?

此外,代码中非silverlight部分引用了第三方常规.Net类库。PCL仍在编译,但由于此引用,我无法在Silverlight中使用它。有什么方法可以告诉PCL只将其包含在.Net使用中吗?

可移植类库是否处理条件语句/引用

该模式实现编译时可移植性,而不是运行时可移植。

如果你有大量的Silverlight特定代码,那么你就没有一个可移植的库——你应该考虑将Silverlight特定代码分解为一个单独的程序集,并让这个专门的程序集依赖于你的PCL。

如果您的Silverlight特定代码很少,可以考虑在运行时使用反射动态绑定到Silverlight依赖项。然后,您的PCL可以在任何上下文中使用,但如果存在Silverlight,它将"优雅地升级"到Silverlight。