【问题标题】:Make winforms application run on other computer使winforms应用程序在其他计算机上运行
【发布时间】:2012-04-07 02:37:17
【问题描述】:

我开发了一个 WinForms 应用程序(使用 C#,使用 Visual Studio 2008),我有几个关于如何正确构建它的问题:

  1. exe 发布文件是否能够在仅具有所需 .net 框架而不是 Visual Studio(或任何其他 Visual-ish 程序)的其他计算机上运行? exe文件大小只有50kb左右,对于这样的应用程序来说太小了,所以我真的很怀疑。我确实在其他安装了 .net 的计算机上尝试过这个,它似乎工作正常,只是想保证这一点。

  2. 有什么方法可以将我使用的 .net 框架功能包含到我的应用程序中,以便它可以在任何其他 Windows 计算机上运行(无论是否安装了 .net 框架)?例如,将所有内容包含在一个 exe 文件中,只需单击并运行。

编辑:分发程序时,50kb的exe文件就够了,对吧?还是我应该交付整个发布文件夹?

【问题讨论】:

  • 50kb 对于 .net 应用程序来说绰绰有余。不要忘记,大部分代码都保存在 .net 框架程序集中,因此不会添加到您的代码中。另外...在过去 50kb 会被认为是一个巨大的程序!
  • 谢谢。那么我应该只获取 EXE,还是整个 Release 文件夹?
  • 首先确保你已经编译了一个发布版本。然后确保所有非标准程序集也已复制到发布文件夹中。然后抓住整个文件夹,你应该很高兴。
  • 您不需要的是那些 *.pdb 和 .vshost 文件,它们用于调试,只会使您的设置膨胀。
  • exe文件已经包含manifest。

标签: c# winforms frameworks build .net


【解决方案1】:
  1. 是的,您的可执行文件将在另一台计算机上正常运行,只要它具有相应的 .Net 包和任何引用的程序集。

  2. 不,没有办法在没有安装 .Net 的机器上运行您的应用程序。 .Net 是开箱即用的,除非您运行的是 WinXP。您可以将 .Net 安装程序与您的应用一起提供。

【讨论】:

    【解决方案2】:

    查看ClickOnce部署

    http://msdn.microsoft.com/en-us/library/t71a733d(v=vs.100).aspx

    ClickOnce 是一种部署技术,可让您创建 可以安装和运行的基于 Windows 的自我更新应用程序 以最少的用户交互。 Visual Studio 完全支持 发布和更新使用 ClickOnce 部署的应用程序 如果您使用 Visual Basic 开发了您的项目并且 Visual C#。

    【讨论】:

    • 我试过了。但这个过程令人困惑,一点也不友好。即使一切都在我的本地机器上,安装文件仍然会尝试连接到 Internet(至少看起来是这样)。顺便说一句,我不想​​要一个安装文件,一个独立的 exe 就可以了。
    • ClickOnce 可用于在 CD/DVD 上部署应用程序 - 无需访问互联网。
    【解决方案3】:

    是的,是的。

    对于第二部分,如果您愿意,您可以将 .NET 框架与您的安装项目打包在一起。当然,这会使您的可分发文件大大变大,因此您可能需要考虑这是否比提供下载链接来安装 .NET 框架更好。

    【讨论】:

      【解决方案4】:

      关于您的第一个问题,似乎只需确保在目标机器中加载相关的 .net 版本就足够了。 对于第二个问题,据我所知,不可能拥有一套可移植的小型 .Net 框架。另一方面,您可以让客户端下载框架。

      【讨论】:

        【解决方案5】:

        对于第一个问题,为什么你担心编译文件的大小和大小非常小,我有一个用于小型 ERP 的 exe,它大约 600 kb。虽然我有填写的组件。

        其次,您可以使用 Visual Studio 中包含的发布工具发布您的应用程序。您还可以在自定义发布时包含 .net 框架。 右键项目>属性>发布

        【讨论】:

        • 我怀疑应用程序的大小,因为当我使用 C++ 编写控制台应用程序时,它们的大小总是在 150kb 左右。谢谢顺便说一句。
        【解决方案6】:

        1)您需要相关的 exe 和所有 DLL。您需要做的就是获取整个调试或发布文件夹,因为这是编译您的应用程序的 OUTPUT/ 结果。

        2)如果您编写 .net 软件,则需要 .net 框架来运行这些应用程序。

        【讨论】:

        • 这可能有点误导,通常您只需要 exe 文件(当然还有 dotnet 框架),并且 bin\Debug 文件夹中还有很多其他文件。只有当您使用第三方库时,您才必须交付他们的程序集。
        • 某人可能有一个控制台应用程序,它在同一解决方案中使用了一个 dll 项目。然后安装程序将需要 exe 和 dll。
        • @Adam Bruss - 是的,但是 user1065635 写道,他在另一台计算机上尝试了 winform exe 并且它有效。当然,必须交付所有引用的程序集。我只是想说该目录中还有其他“不必要的”文件,它们不应该在设置中。
        • 我认为只要不打算在另一个项目中使用程序集,复制整个调试或发布文件夹是可以的。我明白你的意思,因为你永远不想将这些文件夹中的某些文件添加到源代码管理中,以供其他开发人员使用
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-27
        相关资源
        最近更新 更多