我在VS 2008中编写我的应用程序,因此使用所有奇特的东西,如LINQ,对象初始化器等。现在我的应用程序可以在只有.Net 2.0运行时但没有.Net 3.5运行时的机器上运行吗? .Net 3.5运行时是一个巨大的下载,正如大家所知。
答案 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)
不,他们不能。