.DLL与.Net 4和.Net 3.0有什么区别?

时间:2010-12-08 17:48:49

标签: .net-3.5 .net-4.0

我创建了一个.DLL目标.Net 4,但现在我正在考虑将其编译为.Net 3.0,因此使用Visual Studio 2008的人可以使用DLL。

针对.Net 4和.Net 3.0的.DLL有什么区别吗?

也就是说,我应该创建两个DLL(每个框架一个),因为最好使用编译到目标框架的DLL吗?或者我应该只提供一个编译到.Net 3.0并让VS2010用户使用那个,因为使用编译到以前框架的DLL没有区别?

谢谢,

更新: 我本来应该更明确,并添加“除了需要所需的框架”。换句话说,从.Net 4项目引用在.Net 3.0中编译的DLL和在.Net 4中编译的DLL之间有什么区别吗?假设他们都使用.Net 3.0语法,你是否通过使用任何一个来获得/失去任何东西?

2 个答案:

答案 0 :(得分:1)

如果你的程序集没有使用任何特定于4.0的功能,那么最简单的方法就是编译它的3.0版本并将其用于两者。 (实际上,如果您的代码允许,您可以一直下载到2.0版本,因为框架版本3.0和3.5都是2.0的超集)

如果你的图书馆曾经有不同版本的单独代码;为了获得最大的灵活性,您可以为3.0和4.0版本创建单独的项目,并“链接”相同的源文件而不是单独的副本。如果您需要按框架进行不同的编码,则可以使用预处理程序指令。

答案 1 :(得分:0)

  

.DLL与.Net 4和.Net 3.0之间是否存在差异?

是的,有区别。当您为.NET 4.0编译库时,它将链接到mscorlib, v4.0.0.0,如果目标计算机上没有安装.NET 4.0,它将无法工作。另一方面,如果您针对.NET 3.5进行编译,它将链接到mscorlib, v2.0.0.0,它将适用于安装了.NET 3.5或更高版本的计算机(当然假设此库没有其他特殊依赖项)。