【问题标题】:Deploying c# app - user need to install .net framework?部署 c# 应用程序 - 用户需要安装 .net 框架?
【发布时间】:2011-03-19 16:18:22
【问题描述】:

大家好 - 我刚刚使用 c# 编写了一个应用程序并准备部署它。以前从未部署过 c# 应用程序。

我部署了它,VC# 输出了一个 .application 文件、应用程序文件夹和一个安装程序。我的一位用户运行了安装程序(Windows 7)并被提示下载/安装 .net 框架——这需要 10 分钟以上。我的应用程序如此简单,这是不可接受的。

此外,如果可能的话,我需要这个应用程序能够在 mac osx 和 linux 上运行。我应该用 Java 写这个吗(我的计划很糟糕)。我有哪些选择?

【问题讨论】:

  • Java 与 .NET 的相似之处在于用户必须下载 JRE 才能运行您的 Java 应用程序。任何一个选项都可以正常工作。查找 Mono 以在 OSX 和 Linux 上运行 .NET。
  • 感谢大家的帮助。学到了很多。我的问题是,如何使用旧版本的框架分发我的应用程序,以便更多用户不需要安装新的 .net 版本?我正在使用 VC# 2010
  • 在 VS2010 中,您可能针对的是 .NET 4.0。如果您没有使用特定于 v4 的功能,您可以将程序的目标框架更改为 3.5。

标签: c# java .net frameworks cross-platform


【解决方案1】:

C# 应用程序需要在本地计算机上运行 CLR (.NET) 的实现才能运行。 Java 应用程序将需要 JVM 的实现,所以它确实没有什么不同。在 Windows 上,我希望大多数人都安装了 .NET。

看看 Mono 项目在 Linux 和 Mac 上的运行情况:

http://mono-project.com/Main_Page

您可以考虑的一件事是使用较旧版本的 .NET 框架,以确保安装它的人数最多。如果您不需要花哨的新功能,我会使用 .NET 3.5 甚至 2.0。例如,它已经安装在 Windows 7 上。

由于 Windows 7 用户必须下载框架,我假设您当前的目标是 .NET 4,这意味着您必须使用 Visual Studio 2010(或 Express 版本)。这是一个链接,告诉您如何针对不同版本的框架:

http://msdn.microsoft.com/en-us/library/bb398202.aspx

关于 Mono 的简短说明,它是一个出色的跨平台选项,但目前不支持 Windows Presentation Foundation (WPF) GUI 框架。您要么必须使用 Windows 窗体,要么为不同的平台创建不同的前端。

如果您想创建 Linux GUI(也可在 Windows 和 Mac 上使用),您可以尝试 GTK#:

http://www.mono-project.com/GtkSharp

对于 Mac 原生 GUI,您可以查看 MonoMac:

http://mjhutchinson.com/journal/2010/06/09/monomac_in_monodevelop

用于跨平台 .NET 开发的优秀 IDE 是 MonoDevelop(它将读取您的 VC# 项目文件):

http://monodevelop.com/

【讨论】:

  • 感谢贾斯汀的链接,你摇滚!
  • 谢谢为什么,我很高兴能帮上忙。如果我们能够帮助您,请考虑接受某人的回答。
【解决方案2】:

您可以在属性选项卡中更改目标框架。如果你在 VS2008 中启动一个项目,默认是 .net 3.5,而对于 VS2010,它是 .net 4.0。如果您不需要高级功能,您可以将目标更改回 2.0,这应该在大多数计算机上都可用(我猜超过 90%)。请务必删除 2.0 中不可用的依赖项(如 System.Linq、System.DataSet.Extensions)和相关导入(但编译器会告诉你该怎么做)。

【讨论】:

    【解决方案3】:

    其他人给了你复杂的答案。好吧,这是我的简单答案。运行 .NET 应用程序需要 .NET 框架,Java 也需要 JVM(正如 MCain 所说)。从 Windows Vista 开始,Microsoft 包括在 Windows 中构建的 .NET Framework。此外,.NET 有从 1.0 到 4.0 的版本。对于 Vista 和 Windows 7,默认安装 .NET 3.5。我认为您的应用程序面向 .NET 4.0,这就是 Windows 7 用户需要安装 .NET 框架的原因。对我来说,如果我必须编写一个简单的程序,我会使用 .NET 2.0(更高版本 = 更大的库等),这样我的用户(如果他们是 Vista 或 Windows 7)就不会'不必再次安装 .NET 来运行我的软件。您可以从 Visual Studio 的新项目窗口中选择要面向的 .NET 版本。

    【讨论】:

      【解决方案4】:

      与 Java 一样,.Net 语言需要安装运行时。完整的 .Net 框架有时对于小型应用程序来说太大了,因此有一个较小的版本,称为紧凑框架,占用空间更小,安装和下载速度更快。您可以在http://msdn.microsoft.com/en-us/netframework/aa497273.aspx 阅读有关它的信息。正如其他答案所指出的,大多数当前版本的 Windows 都带有各种版本的 .Net 框架,因此可能并非每个用户都需要此安装。

      就您的跨平台需求而言,Mono 允许在 Linux 上运行 .Net 应用程序,我不确定在 OSX 上运行它们。我的假设是你不能。不幸的是,您的跨平台要求使 .Net 成为一个糟糕的选择,您应该选择 Java。

      【讨论】:

        【解决方案5】:

        您需要在客户端系统上安装 .NET 才能使用您的应用程序。

        至于跨平台运行 - 取决于您的应用程序是如何编写的,这可能是简单的,也可能是困难的。

        您可能想看看 Silverlight。这在 OS X 上直接受支持,并通过 Moonlight 在 Linux 上运行。

        另一种选择是使用Mono 在其他平台上运行您的 .NET 应用程序。

        【讨论】:

          【解决方案6】:

          是的,对于任何编译为在托管运行时(.NET 或 Mono CLR、Java JVM)上运行的语言,您都需要安装该运行时。 C# 应用程序可以编译为在 .NET CLR 上的 Windows 上运行,或者在您提到的所有平台上运行在 Mono 运行时上。或者,可以编译 Java 应用程序以在 Java JRE 上运行,该 JRE 也与您提到的所有平台兼容。

          因此,使用任何一种语言都可能存在额外的安装开销,而使用任何一种语言,您都可以实现您想要的。

          【讨论】:

            【解决方案7】:

            .NET 应用程序需要 .NET 框架。 Java 应用程序需要 JRE。您的应用程序很简单,因为 .NET 为您完成了很多工作。许多公司使用 C++ 编写桌面应用程序,但您必须注意跨平台问题。

            【讨论】:

            • 既然我已经用 c# 编写了应用程序,我有哪些跨平台兼容性选项?
            • 跨平台 C# 的最佳选择是使用 Mono(正如我和其他一些人在他们的回答中所说的那样)。
            【解决方案8】:

            C# 被编译为在CLR 上运行的字节码,该虚拟机是 .NET 框架的核心。所以是的,你需要 .NET 框架来运行它。

            大多数当前版本的 Windows(XP、Vista、7 等)都预装了某些版本的 .NET 框架,因此您的用户无需下载和安装它。但是,您可能使用的版本尚未安装在您的(部分)用户的计算机上。

            对于 Linux 和 Mac OS X,有 Mono,它是 .NET 的开源实现,但它不包含 Microsoft .NET 包含的所有内容,因此您的程序可能无法在 Mono 上完全运行。

            从某种意义上说,使用 Java 并不是真正的解决方案,因为您的用户需要下载并安装 JRE(Java 运行时环境)才能运行 Java 程序,这与 .NET 框架非常相似。如果您使用过 Java,一个优势是 Java 比 .NET 更具有跨平台兼容性(Microsoft 对让 .NET 在 Windows 以外的任何平台上运行没有真正的兴趣)。

            【讨论】:

            • Windows 7 的用户没有安装框架有什么原因吗?我怎么知道我使用的是哪个版本?我可以将 .net 框架更改为旧版本以获得更高的兼容性吗?
            • @whydna 您可以在此处找到该信息:en.wikipedia.org/wiki/.NET_Framework - 在 Windows 7 中,.NET 3.5 是默认设置。
            • 您最好将 .NET 框架与您的应用程序一起分发。 support.microsoft.com/kb/324733
            • 不幸的是,Windows XP 不附带 .NET Framework,也不附带任何服务包。 Windows Vista 附带 .NET 3.0,Windows 7 附带 .NET 3.5。
            猜你喜欢
            • 2020-09-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多