如何创建类库的版本以支持多个版本的.NET Framework?

Pau*_*ner 4 .net visual-studio-2010

我正在尝试创建一个类库的系列,这些类在组织内的多个应用程序之间使用.其中一些应用程序面向.NET 3.5和一些目标4.0.

我们希望提供两个版本的程序集,一个定位3.5,一个定位4.0,以便主机应用程序可以选择最适合它们的程序集.

3.5和4.0版本之间存在一些细微差别:

  • 由于被.NET 4.0版本取代,某些类已被删除.
  • 添加了一些类以帮助处理.NET 4.0引入的类.
  • 4.0版本中的某些类已经过修改,以利用4.0中的一些增强的线程支持.

有没有任何解决方案可以让我重复使用代码库的重叠部分,并防止简单地分叉源树?

我的目标是生成针对其指定框架的多个版本的程序集,这些框架可以滚动到NuGet包中并在我们的内部订阅源上公开.

MCa*_*tle 6

这听起来像条件​​编译器指令的工作.

仔细考虑你的代码:

#If NET35
...
#End If
Run Code Online (Sandbox Code Playgroud)

#If NET40
...
#End If
Run Code Online (Sandbox Code Playgroud)

从这里,你必须添加NET35NET40编译常量到您的项目,我会建议先在配置管理器创建自定义的配置,例如DebugNET35,DebugNET40,ReleaseNET35,和ReleaseNET40.创建这些配置后,您可以切换到每个配置并转到项目的"高级编译选项",您可以在其中设置自定义常量,NET35或者NET40根据当前配置.

您也可以在此对话框中设置目标框架,但它将全局设置您的框架版本.要为每个配置设置自定义目标框架,请遵循Pierre的步骤.

之后,选择一个配置并编译!我已经使用这种技术为应用程序的"Demo"和"Full"版本共享相同的代码库.

希望未来版本的Visual Studio将自动定义框架版本:https://connect.microsoft.com/VisualStudio/feedback/details/113323/include-framework-version-defines-automatically

编辑: .NET Framework博客中有一篇新文章讨论了在Visual Studio 2010和2012中编写可移植代码库:http: //blogs.msdn.com/b/dotnet/archive/2012/07/06/targeting-multiple -platforms-with-portable-code-overview.aspx,这看起来像一个更清洁的解决方案.