.Net 3.5应用程序可以在安装了.Net 2.0运行时的计算机上运行吗?

时间:2020-03-06 14:30:26  来源:igfitidea点击:

我在VS 2008中编写我的应用程序,因此使用了所有奇妙的东西,例如LINQ,对象初始化程序等。现在,我的应用程序可以在仅具有.Net 2.0运行时而没有.Net 3.5运行时的计算机上运行吗?众所周知,.Net 3.5运行时是一个巨大的下载。

解决方案

不,他们不能。

如果不使用.NET 3.5库,则可以在.NET 2.0上运行它。请参阅Visual Studio多目标支持。可以使用LinqBridge在.NET 2.0上使用Linq查询

有关详细信息,请参阅Daniel Moth在Channel9上进行的MSVS多目标截屏。

在大多数情况下,可能并非如此,尽管.Net 3.5仍然是.Net 2.0 CLR的代名词,但是我们很可能会使用许多新的库和功能,例如定义扩展方法的代码,这些扩展方法将对我们不可用。没有安装.Net 3.5的客户端。

我们可以使用VS2008来定位.Net 2.0。我认为这是解决方案元素上的一个属性。

http://en.wikipedia.org/wiki/Microsoft_.NET#Microsoft_.NET有很多信息。

如果要使用它的功能,则需要安装.Net 3.5.

例如,我们可以使用var关键字,自动获取器和自动设置器,对象初始化器。 IE。编译为2.0代码的语法糖。

我们不能使用的是驻留在.Net Framework 3.0和3.5库中的功能。例如LINQ。

通过将Visual Studio中的目标平台设置为.Net Framework 2.0,我们可以自己尝试使用哪些功能以及不能使用的功能。当我们使用Framework 3.0和3.5中的内容时,编译器会抱怨。

我们可以通过一些技巧来使用扩展方法:为项目创建此类

namespace System.Runtime.CompilerServices
{
    public class ExtensionAttribute : Attribute { }
}

实际上,扩展方法也可以编译为2.0代码,但是编译器需要定义此类。在这里阅读

我建议在为Framework 3.0和3.5部署应用程序时查看Smallest DotNet,以找到较小版本的框架。

如果不是成本因素,则可以考虑运行时虚拟化软件,例如VMWare ThinApp或者Xenocode Postbuild,这两种软件都允许.NET应用程序运行而无需安装.NET运行时。

Jean-Baptiste Evain的本文介绍了如何使用C3.0和LINQ以及如何针对仅安装了.NET 2.0运行时的计算机进行定位。

这个想法是使用System.Core Mono实现,该实现已获得MIT / X11许可。

注意:此答案首先提供给重复的问题。