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

时间:2008-09-21 14:37:10

标签: .net

我在VS 2008中编写我的应用程序,因此使用所有奇特的东西,如LINQ,对象初始化器等。现在我的应用程序可以在只有.Net 2.0运行时但没有.Net 3.5运行时的机器上运行吗? .Net 3.5运行时是一个巨大的下载,正如大家所知。

8 个答案:

答案 0 :(得分:9)

您可以使用的是例如 var 关键字,自动获取器和自动设置器,对象初始化器。即编译为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代码,但编译器需要定义此类。阅读它here

答案 1 :(得分:5)

如果不使用.NET 3.5库,则可以在.NET 2.0上运行它。请参阅Visual Studio multi-targeting support您可以使用LinqBridge在.NET 2.0上使用Linq查询

有关详细信息,请参阅Channel M上的Daniel Moth的MSVS多目标screencast

答案 2 :(得分:1)

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

答案 3 :(得分:0)

在大多数情况下可能没有,虽然.Net 3.5仍然使用.Net 2.0 CLR执行,但是很多新的库和功能很可能会被使用,例如定义的代码您没有安装.Net 3.5的客户端无法使用的扩展方法。

您可以使用VS2008来定位.Net 2.0。我认为它是Solution元素的属性。

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

答案 4 :(得分:0)

如果要使用其功能,则需要安装.Net 3.5。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

This article from Jean-Baptiste Evain解释了如何使用C#3.0和LINQ以及目标只安装了.NET 2.0运行时的计算机。

这个想法是使用System.Core Mono实现,它是根据MIT / X11许可证授权的。

注意:此答案首先提供给duplicated question

答案 7 :(得分:-3)

不,他们不能。