【发布时间】:2008-09-21 14:37:10
【问题描述】:
我在 VS 2008 中编写我的应用程序,因此使用了所有奇特的东西,例如 LINQ、对象初始化器等。现在我的应用程序可以在只有 .Net 2.0 运行时但没有 .Net 3.5 运行时的机器上运行吗?众所周知,.Net 3.5 运行时下载量很大。
【问题讨论】:
标签: .net
我在 VS 2008 中编写我的应用程序,因此使用了所有奇特的东西,例如 LINQ、对象初始化器等。现在我的应用程序可以在只有 .Net 2.0 运行时但没有 .Net 3.5 运行时的机器上运行吗?众所周知,.Net 3.5 运行时下载量很大。
【问题讨论】:
标签: .net
您可以使用例如 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的代码,但是编译器需要定义这个类。阅读它here
【讨论】:
如果您不使用 .NET 3.5 库,您可以在 .NET 2.0 上运行它。请参阅 Visual Studio multi-targeting support 您可以使用 LinqBridge 在 .NET 2.0 上使用 Linq 查询
有关详细信息,请参阅 Channel9 上 Daniel Moth 的 MSVS 多目标 screencast。
【讨论】:
在为 Framework 3.0 和 3.5 部署应用程序时,我建议查看 Smallest DotNet 以找到较小版本的框架。
【讨论】:
在大多数情况下可能不会,虽然 .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。
【讨论】:
如果成本不是一个因素,您可以考虑运行时虚拟化软件,例如 VMWare ThinApp 或 Xenocode Postbuild,这两种软件都允许运行 .NET 应用程序而无需安装 .NET 运行时。
【讨论】:
This article from Jean-Baptiste Evain 解释了如何使用 C# 3.0 和 LINQ 以及仅安装 .NET 2.0 运行时的目标计算机。
这个想法是使用 System.Core Mono 实现,它在 MIT/X11 许可下获得许可。
注意:此答案首先提供给duplicated question。
【讨论】:
不,他们不能。
【讨论】: