【问题标题】:Running .net based application without .NET Framework在没有 .NET Framework 的情况下运行基于 .net 的应用程序
【发布时间】:2010-10-31 11:44:12
【问题描述】:

有没有办法在不安装 .net 框架的情况下运行基于 .net 的应用程序。有没有办法做到这一点。有没有软件可以做到这一点。也可以使用商业软件。

添加:

有没有人使用VMWare thin client 的经验?

【问题讨论】:

  • 为什么? .net 是免费的
  • 你的情况如何?也许有一个不是您所要求的解决方案。超薄安装?某种奇怪的装置?一家 Java 公司的秘密项目,其公司政策检测 .NET?
  • 因为我需要在windows 2000系统中安装软件,我不想安装框架。检测我需要安装的组件并不容易,因此我想要一个不需要 .net 框架的解决方案。
  • 你可以使用 .NET 客户端配置文件,对吧?
  • .NET 客户端配置文件是 .NET 3.5 的子集。从 .NET 3.0 开始不支持 Windows 2000。由于 OP 需要在 Win2k 上安装,我打赌客户端配置文件不是一个选项。

标签: .net deployment .net-2.0


【解决方案1】:

我知道 .NET 框架的唯一替代方案是 MONO(用于 LINUX)。

【讨论】:

  • 单声道也可以在 Windows 上运行。
  • 谢谢乔尔,不知道,太好了。
【解决方案2】:

您可以使用 mono 静态链接您需要的所有框架 dll。

当然,这限制了您对框架的单声道实现,它正在变得越来越好,但在一些地方仍然不完整。


更新:
根据您的各种 cmets,我最好的建议是使用 2.0 版框架。这将在 Windows 2000 上安装得很好,没有任何问题,如果需要,您可以从 Visual Studio 2008 定位它。


我也有点好奇您对 Windows 2000 的要求。您是部署到企业还是家庭环境?

几乎没有家庭用户拥有 Windows 2000。家庭用户最终选择了(不寒而栗)Windows ME,它大约在同一时间发布,因此几乎完全转向 Windows XP。与 Windows 2000 相比,您更有可能在家中看到 Windows 98 机器,甚至微软也不支持 Windows 98。

另一方面,大量企业仍在大量使用 Windows 2000 机器。但是商业环境通常不会有安装 .Net 框架的问题。如果需要,他们甚至可以通过组策略部署将其自动添加到机器中。

【讨论】:

  • 我宁愿支持 Mono 的实现,并认为 MS .NET 是无关紧要的。不过不会发生。
  • 嗯,很有趣。但由于框架 dll 是 LGPL,因此您的应用程序必须是开源的。我对么?二进制文件有多大?
  • @Unknown - 不使用 LGPL。如果它是在普通的旧 GPL 下获得许可的,那么您将必须开源所有代码。
  • @Jason,不,这是不正确的。如果静态链接 LGPL 库,则最终用户无法使用他们自己的 LGPL 库版本重新编译应用程序(LGPL 的要求)。因此,您必须开源。因此,您必须动态链接 LGPL 库以避免这种情况。
  • @Unknown,严格来说这不是真的。如果您知道,实际上阅读了 LGPL,您会看到(在第 6 节中)只要您还为最终用户提供修改 LGPL 部分的方法,您就可以进行静态链接。例如,您可以根据您选择的条款提供 LinkedWithMono.exe,只要您还提供 JustMyAssembly.exe 和 Mono.zip,以便最终用户可以更改 Mono 部分。
【解决方案3】:

使用 Mono,它由 Novell 开发并且是开源的

编辑:问题是关于在没有安装运行时的情况下运行,而不管“供应商”如何。即便如此,这里还是 Mono 的维基百科条目的链接。享受吧。

http://en.wikipedia.org/wiki/Mono_(software)

【讨论】:

  • 我认为问题不在于安装 .NET 框架,而在于安装 a .NET 框架。 Mono 仍然是一个 .NET 框架。
【解决方案4】:

那里有几种不同的工具,我尝试过的几个是:

您可以通过搜索“.NET Linker”找到更多信息。

上面的两个,我试过了,似乎工作正常,但我从来没有广泛测试过我用它们构建的代码。我尝试它们主要是出于好奇。

我的 .NET 应用程序主要由 IT 部门使用。安装 .NET 框架对他们来说没什么大不了的。

如果您想编写更针对最终用户的软件,那么 .NET 安装可能会关闭它们。

【讨论】:

  • 你的目标平台是什么?
  • 我在 Windows XP 和 Server 2003 上使用 MS .NET 2.0 进行了测试。
  • @crauscher - 是的,它们似乎工作正常,但我没有完全测试所有内容。
  • Spoon Studio 好像是一个虚拟机。我猜这不是真正的轻量级东西。 Salamander 的最后一次更新是在 2008 年支持 Vista。我现在会认为它已经死了。
  • Salamander 不响应信息或演示请求。就我而言,死了。
【解决方案5】:

如果您的意思是“我可以在完全不安装框架的情况下运行 .NET 应用程序吗?”那么答案是否定的,你不能。

如果您的意思是“我可以在不安装 Microsoft 的 .NET 框架和 CLR 的情况下运行 .NET 应用程序吗?”那么答案只有在你能找到替代品的情况下,而我所知道的只有 Mono。

【讨论】:

  • 实际上,有一些工具声称允许您将所有必要的位和字节静态链接到您的应用程序,然后在干净的情况下运行它,例如未安装任何 .NET 框架或 Mono 的 XP 系统。并不是说我认为这是一个好主意——它很容易出错,它会膨胀你的应用程序的大小,最后真的——你赢了什么?但这似乎是可能的。
  • 我同意这不是一个特别好的主意。这可能是可能的,但我想说,尤其是对于初学者来说,最好假设不,没有某种框架/CLR 就无法运行 .NET 应用程序。在弄清楚这些东西时,不妨学习正确的假设。 :)
【解决方案6】:

你没有提到你想要运行的软件类型,所以我想我会加两分钱。

Microsoft 发布了 Silverlight,这是一个基于 .NET 的浏览器插件,他们一直在与 Novell 合作推出基于上述 Mono 编译器的 Silverlight 版本,称为 Moonlight。 Microsoft 原生支持 Windows 和 Mac OS X 10.5。

如果您想了解更多信息,请点击以下链接: http://en.wikipedia.org/wiki/Microsoft_Silverlight http://www.microsoft.com/silverlight/

【讨论】:

    【解决方案7】:

    为了完整起见,考虑到与 MONO 的响应一起考虑的事情。

    您是否考虑过用本机代码编写应用程序?这样你就可以简单地部署你的 exe。如果你需要一个 RAD 环境来提高生产力,那么像 Delphi 或 C++ Builder 这样的工具会给你一种非常像 FCL 的感觉(Delphi 的 VCL 是由 Anders Hejlsberg 在他搬到 MS 之前构建的,所以可能没有 C# 感觉非常熟悉的巧合德尔菲特)

    【讨论】:

      【解决方案8】:

      我的团队遇到了类似的问题。我们需要在没有可用的 .NET 框架的 Windows PE 下运行我们的 .NET 3.5 WPF 应用程序。我评估了所有选项,发现 Xenocode PostBuild 是最好的。

      它的 GUI 有点违反直觉,在让它工作的道路上遇到了一些坎坷,但从那以后它一直很可靠。

      如果您走这条路,请注意,您需要确保在生成非托管可执行文件之前完全调试您的代码,因为您无法调试生成的应用程序(除非您喜欢汇编程序)。

      另请注意,嵌入 .NET 框架会产生较大的可执行文件。 2.0 约 20MB,3.5 约 40MB。

      【讨论】:

      • 您尝试了哪种链接器软件?
      • 我们最终使用的产品 Xenocode PostBuild 完成了整个工作,包括使用内置的 .NET 固件构建最终的可执行文件。
      【解决方案9】:

      当您使用支持 .net 的操作系统时,这听起来确实麻烦多于其价值。

      .net 2.0 我认为这些天甚至可以作为 Windows 更新,它只有 26mb,而且你只安装一次。如果你想要一些 win32 原生的东西,请返回非托管 C++。

      另请查看:SmallestDotNet(虽然不是 windows 2000,但它提到“很快,微软将为没有 .NET Framework 版本的 XP SP2 机器发布超小下载”。)

      【讨论】:

        【解决方案10】:

        This 是我发现的更好的解释之一(在众多解释中):

        实际上,这是不可能的。理论上,编译器可以检查 您的应用程序正在使用的所有类,并将该代码包含在您的 应用程序,并将整个内容编译为本机代码。但是,还是不行 考虑到 CLR 本身,它包含垃圾等核心功能 收集器、程序集加载器、元数据读取器等。所有这些东西都是原生的 代码,所以它们必须被复制。

        此外,并非 .NET 类中的所有方法都在托管代码中。如果你看 Reflector中的反汇编代码,你会看到一些方法被标记了 带有 MethodImplAttributes.InternalCall 标志。这意味着实际 该方法的实现在 CLR 内部。任何编译 C# 的系统 (或任何其他 .NET 语言)到本机代码必须复制所有这些, 这将是一项艰巨的努力。由此产生的应用程序可能会相当 大。

        【讨论】:

          【解决方案11】:

          如果不想使用 .NET 框架,我认为最好考虑使用另一种编程语言,它会生成独立的可执行文件。像 Delphi 或者,如果奖品很重要,Lazarus 之类的东西。但我确信还有其他选择。

          【讨论】:

            【解决方案12】:

            老问题,但它可以帮助其他读者

            您可以使用 IKVM 的二进制文件来运行 Mono/.Net/Java 应用程序,而无需任何预安装的框架。 请记住:

            您应该能够成功执行它。 (在 Windows .NET 上,记得将 IKVM dll 复制到当前目录。)

            请参考documentation以获得更好的视图。

            【讨论】:

              【解决方案13】:

              它被称为静态链接.net 框架。 Mono 允许这样做,并且还有其他供应商。一种情况是如果您需要在 windows pe 中运行。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-11-05
                • 1970-01-01
                • 1970-01-01
                • 2020-09-20
                • 2010-10-05
                • 1970-01-01
                • 2023-04-08
                相关资源
                最近更新 更多