您可以在解决方案中混合使用.NET framework版本吗?

您可以在解决方案中混合使用.NET framework版本吗?,.net,frameworks,versions,.net,Frameworks,Versions,我工作的代码库是.NET2.0。对于我们新的assembly/DLL/web应用程序,我希望利用3.5提供的功能 一个解决方案能否混合使用.NET框架(每个程序集)?是否有与IIS相关的注意事项 我希望听到任何积极/消极/如何反馈。让我知道 谢谢 编辑:我错了,你可以。你可以参考2.0中的3.+程序集,因为CLR是相同的。从2.0/3.+到4.0时不会出现这种情况,因为有新版本的CLR 是的,您可以在Visual Studio中执行此操作,它被称为多目标定位 斯科特·古思里(Scott Guth

我工作的代码库是.NET2.0。对于我们新的assembly/DLL/web应用程序,我希望利用3.5提供的功能

一个解决方案能否混合使用.NET框架(每个程序集)?是否有与IIS相关的注意事项

我希望听到任何积极/消极/如何反馈。让我知道


谢谢

编辑:我错了,你可以。你可以参考2.0中的3.+程序集,因为CLR是相同的。从2.0/3.+到4.0时不会出现这种情况,因为有新版本的CLR


是的,您可以在Visual Studio中执行此操作,它被称为多目标定位

斯科特·古思里(Scott Guthrie)在这方面有一篇很棒的博客文章

VS2008是 Visual Studio,包括 对.NET的多目标支持。 这意味着你可以使用 VS 2008不仅创建和编辑 .NET3.5项目,但也包括.NET3.0项目 以及.NET2.0项目。这 允许开发人员更快地 升级并利用新的 Visual Studio工具功能- 不一定需要 即将发布的.NET的较新版本 安装在客户端和 运行其 应用程序


干杯

如果您可以等待新的.NET 4.0框架,您将能够在同一过程中并排运行每个版本的dll。

这应该不是问题。NET 2.0 RTM到.NET 3.5 SP2都使用完全相同的CLR版本。它们仅因包含的部件数量不同而不同。程序集格式相同。当然,如果您确实利用了仅包含在.NET 3.5中的程序集,则必须确保目标计算机上实际安装了3.5。如果不是,你会很快发现的


如果已启用Windows Update,则计算机上应已存在3.5。如果没有,则需要十几分钟左右的时间才能完成。

作为旁注,我们有一些旧的1.0库,在2.0中使用,在3.5中仍然使用,而无需重新编译。因此存在一些向后兼容性。

您不能让.Net 1.1组件与.Net 2.0+程序集在同一进程中运行-尝试这样做将导致失败

对于IIS,这意味着您不能让.Net 1.1站点/虚拟目录与.Net 2.0及以上站点在同一应用程序池中运行-您需要创建一个单独的应用程序池,以使.Net 1.1代码在不同的进程中运行。(这只能在IIS 6.0及以上版本中完成,即不能在Windows XP中完成)


然而正如nobugz所说,.Net 2.0到.Net 3.5都使用相同的CLR,因此不同版本的.Net代码可以在同一个程序集中混合使用而不用担心-这对IIS也是如此(.Net 2.0和.Net 3.5代码可以在同一个应用程序池中愉快地共存)

您可以根据以下要求同时使用2.0、3.0和3.5:

据我所知,这完全有可能是另一种情况,但在2.0项目中添加对3.5项目的引用时,您会收到警告。此外,引用的3.5代码可能会导致错误,但我不确定这一点。严格来说,这不是真的。2.0、3.0和3.5都在同一个2.0 CLR上运行。(忽略服务包等)。如果您不依赖任何service pack更改,则完全可以使用2.0代码中的3.5程序集。您可以直接在VisualStudio中执行,它只是给您一个警告。我怀疑它是否得到官方支持,但它是有效的,如果你手动定位和引用所需的程序集,甚至可以从2.0中执行Linq之类的操作。是的,我真傻。我在考虑从1.0升级到2.0。这不是他想要的。3.5和2.0都在2.0 CLR上运行,因此不需要并排加载CLR。@好听,听起来不错,它似乎可以工作,但为了安全起见,您是否有MSDN链接,其中记录了此功能是有保证的?没关系,我想我已经找到了相关文档:并排是一个不同的主题。OP希望使用内置于一个版本的程序集A的功能,从针对不同版本的程序集B。“并排”是指拥有同一dll A的多个副本,这些副本彼此不冲突。如果您希望保留旧项目不变,那么您当然可以在单个解决方案中拥有一个2.0程序集和一个3.5程序集/项目。就IIS而言,您只需要在服务器上安装3.5框架(还有3.5 Service Pack 1)。2.0、3.0和3.5框架可以同时安装,没有任何问题。这就是我喜欢stackoverflow的原因。谢谢你的链接和解释!回答得很好,但这不是海报所问的问题——他们问的是在同一个环境中使用多个版本的.Net frameworkassembly@Justin不,他们问“一个人可以在一个解决方案中混合.NET框架(每个程序集)吗?”尽管Justin的说法有误,但OP并不是这么问的。多目标支持仅仅意味着VS可以处理不同版本的框架。这一事实并没有告诉我们一个包含多个程序集的解决方案是否会真正“工作”。答案是“是”,但有一个警告:可执行文件的框架版本必须至少与其引用的库一样高。可执行框架版本>=库的framwork版本。“您不能让.Net 1.1关联与.Net 2.0+程序集在同一进程中运行”-是的,您可以-前提是您使用的是.Net 2.0 CLR。在4.0中,无需重新编译。。。天啊,时间过得真快。