根据框架版本实现接口

Gre*_*Ros 3 .net c# compilation interface

我正在写一个库,我想要一个类来实现并IReadOnlyList<T>尽可能地使用它.但是,该接口仅在框架版本4.5开始时可用,并且我不希望仅仅因为这个接口而绑定到该版本.

有没有办法我可以自动编译两个版本的库,一个用于4.5(将实现接口,并可能还有一些其他功能),另一个用于3.5?

作为一个例子,我正在寻找像MSBuild配置这样的东西,"在两个[或更多]版本中编译这个库",然后为每个版本指定不同的选项,如定义的符号,框架,引用等.

如果这是可能的,它实际上可以解决我一直遇到的许多其他类似问题.

Bas*_*Bas 6

您可以使用编译器指令,例如

#if NET45
//specific code for .NET 4.5
#endif
Run Code Online (Sandbox Code Playgroud)

然后使用Project Linker创建两个项目,每个版本一个,以维护单个代码库.在.NET 4.5项目中,您可以NET45在构建时指定变量.这样,#if块中的代码将仅用于其中一个版本.

  • 您仍然需要设置项目结构,但这是一次性操作. (2认同)