首页 > 解决方案 > 是否可以在 EXE 应用程序中打包资源文件?

问题描述

我正在 Visual Studio 2012 中开发一个小型 C# 应用程序。该项目是一个使用 .NET 4.5 的控制台应用程序。我对 VS2012 和 C# 开发相当陌生 - 我的背景是 HTML/XML 和 JavaScript,但经过大量试验和错误(以及 Google 搜索)后,我的应用程序按预期工作。但是,我对生成的项目文件有疑问。

当我构建应用程序以进行发布时,许多文件与您运行的实际 EXE 一起放置在 BIN 文件夹中。这些文件的名称如下:

该文件夹还包括用作资源文件的两个 DLL 文件,以及一些类似上述命名的附加文件,但使用 DLL 文件名而不是“AppName”。每次构建应用程序时只更新三个文件,所以我想知道是否需要所有这些文件。如果可能的话,我想简化复制到生产中的文件数量。

EXE 工作是否需要这些附加文件,如果需要,是否可以将它们打包到 EXE 本身以简化部署过程?


附加信息

有问题的应用程序引用了 Office 2016 产品中包含的两个 DLL 文件。我勾选了嵌入引用的选项,这显然是它将 DLL 文件复制到项目文件夹的原因。

目前,我的部署过程是将所有文件(*.exe 以及上面提到的文件)从项目的 BIN 文件夹复制到用户具有 READ 访问权限的网络位置。然后通过 UNC 路径将 EXE 称为客户端计算机。

理想情况下,我的目标是简化最后一步,以便只有 EXE 出现在用户可访问的网络位置。

标签: c#.netvisual-studio-2012

解决方案


您将需要 AppName.exe 文件和它引用的任何相关 DLL。我不确定您使用的是什么资源,但鉴于它们存在于您的 EXE 使用的 DLL 中,因此需要将其部署到目标计算机上。您可以在此处找到更多信息:

DLL 查找顺序

注意: 这些 DLL 可能已经由 Office 部署到您的客户端 PC 并且可以在 GAC 中访问。鉴于问题,您可能需要更新以包含此信息。

.vshost 文件用于 Visual Studio 调试,不需要部署。如果 AppName.exe.config 文件具有偏离标准 .NET 配置所需的运行时信息,或者您的应用程序中包含应用程序设置,您可能希望部署该文件。更多信息在这里

至于在编译结束时只有一个 .exe,您可能想查看 ILMerge ,它已经在这里有了答案,尽管我不知道它如何处理资源 - 您使用的是什么资源。

合并


推荐阅读