当前位置: 首页 > 编程语言 > C#

C#中的条件编译依赖于框架版本

时间:2023-04-10 20:17:18 C#

C#中的条件编译依赖于框架版本或者其他一些方法来做到这一点?我认为没有任何预定义的“预处理器”符号。但是你可以像这样实现你想要的:为你的项目创建不同的配置,一个对应你想要支持的每个CLR版本。每个CLR版本选择一个符号,例如VERSION2、VERSION3等。在每个配置中,定义一个与其关联的符号,并取消定义所有其他符号。在条件编译块中使用这些符号。没有任何内置的,但您可以提供自己的。对于这种特定情况,您可能希望将逻辑封装在(例如)包装器(锁)类中,这样您就不会在代码中散布#if;当然,如果您只是做一点锁定,那可能不值得这么麻烦。我使用不同的配置和/或项目来构建各种平台——即使用此技巧为.NET2.0、.NET3.0、mono、CF2.0、CF3.5构建protobuf-net。该代码具有基于不同符号的#if块来控制逻辑-因此,例如,BinaryFormatter在CF上不可用,WCF仅在.NET3.0上可用,Delegate.CreateDelegate在CF2.0上不可用,等等。您可以使用反射动态检查某些类型的ReaderWriterLockSlim是否可用(而不是使用预处理器)。这将为您提供部署单一版本产品的优势,拥有(或更新).NET3.5的用户将从优化的代码中受益。您可以使用/define编译器开关手动设置此符号。然后,为每个所需的clr版本创建不同的构建配置。如果这就是您需要做的全部,我想您可以使用Environment.Version,但就像divo的解决方案一样,它似乎在其中留下了很多不必要的代码。以上是C#学习教程:条件编译依赖C#中框架版分享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: