2010-12-08 94 views
2

我创建了一个.DLL目标.Net 4,但现在我正在考虑将它编译为.Net 3.0,以便使用Visual Studio 2008的用户可以使用该DLL。。NET 4和.Net 3.0编译的.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语法,你是否通过使用任何一个获得/失去任何东西?

回答

1

如果你的程序集没有使用特定于4.0的任何特性,那么编译它的3.0版本并将其用于两者都可能是最简单的。 (实际上,你可以去一路下跌到2.0版本,如果你的代码允许的话,作为框架版本3.0和3.5是2.0各超集)

如果库做过有不同的版本,不同的代码;为了获得最大的灵活性,您可以为3.0和4.0版本创建单独的项目,并且“链接”相同的源文件,而不是单独的副本。如果您需要针对不同的框架编写不同的代码,您可以使用预处理器指令。

0

。NET 4和.Net 3.0编译的.DLL有没有区别?

是的,有区别。当你为.NET 4.0编译一个库时,它将链接到mscorlib, v4.0.0.0,如果目标机器上没有安装.NET 4.0,它将无法工作。另一方面,如果你使用.NET 3.5进行编译,它将链接到mscorlib, v2.0.0.0,它可以在安装了.NET 3.5或更高版本的机器上工作(当然假设这个库没有其他特殊的依赖关系)。

+0

更新了问题以澄清问题。 – Manuel 2010-12-08 18:31:18