【问题标题】:Can I make an application made as a C# Windows Application developed in Visual Studio 2012 as a portable application?我可以将在 Visual Studio 2012 中开发的 C# Windows 应用程序制作为可移植应用程序吗?
【发布时间】:2014-05-13 06:52:34
【问题描述】:

我使用 Visual Studio 2012 在 C# 中制作了一个 Windows 窗体应用程序。我可以将它作为可移植应用程序发布到 Windows 机器吗?

附:我在这里指的可移植性是在没有安装和 .net 框架的情况下使用任何 Windows(最好是 Windows 7 或 8)机器

【问题讨论】:

  • 我不认为你可以变得完全可移植,因为你仍然需要安装 .NET Framework。我知道Mono 可以包含在程序中,这将使其更便携,但我没有尝试过或不知道如何。
  • @Default 据我了解,这正是 .NET Native 承诺提供的:目标机器上不需要 .NET 框架。
  • @WimOmbelets 声明 今天发布的 .NET Native Preview 仅针对应用商店应用,但我们正在努力改进所有 .NET 应用的原生编译。。如果他们能解决这个问题,那就太好了。很好的发现!
  • 所以我不想在机器上安装 .net 框架吗?

标签: c# .net windows visual-studio-2012 portability


【解决方案1】:

是的。
您需要做的就是将您的bin 文件夹保存起来。它具有您的可执行文件和所有依赖项。
无需安装。

请记住,为了真正可移植,您需要确保您的应用程序不会修改注册表或计算机配置。

(来自维基百科:)

便携式应用程序(portable app),有时也称为 独立,是旨在在兼容计算机上运行的程序 没有以修改计算机的方式安装 配置信息。

【讨论】:

  • 您仍然需要安装 .NET Framework,对吗?
  • @Default 没错。不过,如果这是唯一的先决条件,我认为将应用程序称为可移植应用程序是合理的。您知道您的用户已将其安装为他们的操作系统的一部分并不少见(这当然取决于操作系统和所需的 .NET 版本)
  • @AviTurner 所以这意味着如果机器上没有 .net 框架,我必须先安装 .net 框架?
  • @user3218743 没错。老实说,我看不出有办法让你避免这种情况。另一方面,用户安装它是很常见的。例如win 7 gets .Net 4 via Win Update
【解决方案2】:

如果您没有任何依赖项,则可以,例如你只有.EXE。如果您有一些 .dll,您可以使用 ILMerge 将它们合并为一个 .EXE

【讨论】:

  • 这会消除对 .NET 框架的依赖吗?
  • 谢谢。但是我不想要.net框架吗?
  • 如果您想编写非.NET 依赖的应用程序,我建议您切换语言。
【解决方案3】:

取决于你对便携的理解。 Avi 的答案当然有效,ILMerge 也是如此,但也有 一个文件,无需安装方法来实现可移植性。

我谨慎行事,因为我不想宣传任何应用程序或其他应用程序,但除了占用整个 /bin 文件夹外,我过去曾玩过 Cameyo,这似乎做得相当不错在虚拟化(和呈现可移植性)大多数应用程序时,只要它们不是太大(或者可能对你拥有的东西有太多依赖,不确定)。可能存在替代工具,我最近没有研究过其中任何一个,我也不喜欢或附属于其中任何一个。

似乎适用于您的普通应用。我尝试虚拟化 Visual Studio,这很有趣。大禁忌。
谁知道,它可能适合您的需求。尽管如此,它仍然没有消除在目标机器上安装 .NET 框架的需要。正如我在评论中提到的,这可能适用于 .NET Native(以及在撰写本文时,未来)。

【讨论】:

  • 很抱歉我没有理解虚拟化 Visual Studio 部分。
  • 对于非常大的应用程序,转换/虚拟化可能会失败。可能适用于您自己的应用程序。
猜你喜欢
  • 2012-12-17
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多