【问题标题】:Running winform application without .net framework在没有 .net 框架的情况下运行 winform 应用程序
【发布时间】:2020-09-20 04:21:40
【问题描述】:

我正在用 c# 开发一个闪存复制保护软件。该软件保留在U盘上(不能转出或安装在电脑中),是一个点击运行软件,无需安装。我知道要让它在其他计算机上工作,计算机必须安装 .net 框架。我在想是否可以将.net framework dll 添加到应用程序的启动路径中。如果可行,请告诉我以及如何操作。

如果除了将我的项目切换到 C 或 C++ 之外还有其他方法,请告诉我。谢谢。

【问题讨论】:

  • .NET Native 是您正在寻找的机器人吗? docs.microsoft.com/en-us/dotnet/framework/net-native |然而,要求本身很奇怪。这只会在 Windows 上运行。并且XP这一侧的所有Windows都安装了一些框架。
  • @Christopher。我不知道,我可以用 .net native 做 windows 窗体应用程序吗?

标签: c# .net windows winforms frameworks


【解决方案1】:

在正常的 .NET 编译中(无论源语言如何),产品是 (MS)IL - (Microsoft) Intermediate Language - dll。在可执行文件的情况下,它被赋予了一些本机引导代码,一个入口点,但它仍然与框架安装紧密相关,并且几乎适用于 .NET dll 之类的所有东西。框架必须进行最终的 IL -> Native Code 翻译。 IL 是一个与 Java Bytecode 非常相似的概念,但在 Java 中有效和无效的时间大约为 5 年。

.NET Native 不编译 IL。它编译硬的本机代码。类似于任何 Native C++(不要误认为是 C++ .NET)编译器会生成的编译器。与 Delphi 编译器相同。编写框架本身的内容相同。最终程序将拥有它访问的所有 .NET .dll 的本地副本。它完全独立于任何 .NET Framework 安装。

【讨论】:

  • 好的,但我在 Visual Studio 2010 上看不到 c# .net native。我必须下载它吗?
  • @AdorableLaughter 2010 可能还有几年的历史。它似乎至少存在于 2015 年:stackoverflow.com/a/32009939/3346583 |编辑:是的,最早是在 2015 年添加的。
  • @AdorableLaughter 最初的公告说它不适用于 Windows Forms,因为 Native 与 Core 相关,而 Core 当时没有 WindowsForms 支持。但是,与此同时,Core 引入了 Windows 窗体支持。 |我只能建议获得最后一个 Visual Studio 社区版本,并希望获得最好的结果。
  • @AdorableLaughter 关于“.NET Native + WindowsForms”的问题,我得到了一位 MSFT 家伙的回答:stackoverflow.com/a/33768621/3346583 |它应该更有可能在 .NET 5 和 6“品牌”下工作。 | WinForms 是一项棘手的技术,因为它在技术上已经被弃用了 2 年。程序员不会让它死掉。
  • 我了解到所有的电脑都安装了.net框架,可能是低版本。因此,我在 .net 框架版本 2 中重新开发了该软件,并且成功了。我现在可以在低 .net 框架的不同计算机上运行它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2011-11-05
  • 2010-10-31
  • 2011-10-03
  • 2019-02-08
  • 2016-01-29
  • 1970-01-01
相关资源
最近更新 更多