【问题标题】:Can .Net 3.5 apps run on machines that have .Net 2.0 runtime installed?.Net 3.5 应用程序可以在安装了 .Net 2.0 运行时的机器上运行吗?
【发布时间】:2008-09-21 14:37:10
【问题描述】:

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

【问题讨论】:

    标签: .net


    【解决方案1】:

    您可以使用例如 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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          在大多数情况下可能不会,虽然 .Net 3.5 仍然与 .Net 2.0 CLR 一起执行,但您很可能会使用许多库和功能,例如定义未安装 .Net 3.5 的客户端无法使用的扩展方法。

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

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                【解决方案7】:

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

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

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

                【讨论】:

                  【解决方案8】:

                  不,他们不能。

                  【讨论】:

                    猜你喜欢
                    • 2010-12-10
                    • 2011-08-23
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-05-20
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多