【问题标题】:Visual Studio C# - Compiling application?Visual Studio C# - 编译应用程序?
【发布时间】:2012-01-03 02:49:20
【问题描述】:

在过去的一周里,我用 C# 学习和编写了一个小型个人应用程序。我使用 dotnetbar 并且在我的机器上调试时一切运行良好,但我想将所有内容编译成一个可执行文件并让一切正常工作......

有人告诉我,在 Visual Studio 中编译的方法是构建解决方案,将文件放入 bin/release 或 bin/debug。我在发布模式下构建了解决方案并运行了应用程序,一切正常,但是当我将其转移到另一台计算机进行测试时,没有任何打开,大约 30 秒后出现错误。

我以为它是 dotnetbar,所以我用一个按钮创建了一个新项目,在另一台计算机上对其进行了测试,它工作正常。我从 dotnetbar 添加了一个 ButtonX,对其进行了测试,但它没有打开,甚至没有错误消息。

为什么会这样?该程序是否需要附带 dotnetbar dll,或者我可以以某种方式使用应用程序编译它们?

【问题讨论】:

  • 您确定在您测试的另一台计算机上安装了适当版本的 .NET Framework 吗?无法创建不需要安装 .NET Framework 的 .NET 应用程序。
  • 是的,我尝试使用 dotnetbar dll 对其进行测试并且它工作正常,所以唯一的问题是我需要包含我希望在应用程序中包含的 dll。

标签: c# compiler-construction compilation reference


【解决方案1】:

是的,所有依赖项都需要包含在内……您不能将它们链接到您的程序集中。我假设这个 dotnetbar(从未使用过)可能已将其自身安装到您的 GAC 中。如果适当的 .dll 没有被复制到您的 Release 文件夹中,那么您需要将程序集引用上的“复制本地”设置更改为 true。这会将其复制到输出文件夹,以便在部署时可用。

【讨论】:

  • 虽然可以。我下载了一些使用 dotnetbar 但只有一个可执行文件的应用程序。
  • 可能是您已经安装了它们,或者您下载的应用程序使用了代表您安装它们的引导安装程序。在任何一种情况下,.NET 都不支持链接,并且这些依赖项必须以一种或另一种方式存在
  • 这两个都不是...有人告诉我它使用了某种依赖编译器,从而消除了对外部文件的需求。
  • 嗯,是的,有来自 remotesoft (remotesoft.com/linker) 的 3rd 方工具,例如 Salamander .NET,但它不是 .net 直接支持的东西。我明确排除提及它,因为(IMO)它几乎总是不必要的,因为 .net 中的依赖系统非常灵活。
【解决方案2】:

查看来自 DotNetBar 的website 的信息。您需要复制文件或在 Visual Studio 中使用 Setup Project。

来自上面的网站:

用于 WPF 的 DotNetBar 与您的应用程序一样简单,只需包含 与您的应用程序位于同一文件夹中的 DotNetBar 程序集 可执行。您只需要分发您引用的程序集 在你的项目中。

可能包括以下程序集:

DevComponents.WpfRibbon.dll

DevComponents.WpfEditors.dll

DevComponents.WpfDock.dll

DevComponents.WpfSchedule.dll


编辑:

根据您的 cmets,您可以尝试创建 Self Extracting Exe 或使用 ILMerge 之类的东西。我没有亲自尝试过。

【讨论】:

  • 之前有人提到过它,我不太想知道如何使用它,但我最终还是得到了它并且它工作了,所以谢谢 :D
  • @Walkerneo 没问题,很高兴为您提供帮助
【解决方案3】:

看起来可能有一些丢失的 .dll 文件应该与 release 位于同一文件夹中。通常您需要发布文件夹中的所有文件才能正确运行应用程序(因为您可能编写的某些文件可能刚刚创建为 DLL 并在运行时链接)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多