1

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

我想将其转换为单个可移植类库,但我有一点代码在两者之间有所不同。我目前使用条件编译器语句来分离这个文件的实现。

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

这会在 PCL 中得到尊重吗?

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

4

1 回答 1

1

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

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

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

于 2012-02-01T04:43:20.877 回答