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

C# 可移植类库是否处理条件语句/引用?,c#,.net,silverlight,portable-class-library,C#,.net,Silverlight,Portable Class Library,我有一个类库,我使用两个链接项目和链接文件技术在.NETFramework和Silverlight之间共享 我想把它转换成一个可移植的类库,但我有一点代码在两者之间是不同的。我目前使用一个条件编译器语句来分隔这一文件的实现 #if SILVERLIGHT ... #else ... #endif 这会在PCL中得到尊重吗 另外,不是silverlight的代码部分引用了第三方常规.Net类库。PCL仍然可以编译,但由于此引用,我无法在Silverlight中使用它。有没有办法告诉PCL只在.N

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

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

#if SILVERLIGHT
...
#else
...
#endif
这会在PCL中得到尊重吗


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

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

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


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

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

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


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

谢谢。我没有考虑过反思。谢谢。我没有考虑过反思。