是否可以在EXE应用程序中打包资源文件?

时间:2019-01-04 18:11:02

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

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

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

  • AppName.exe.config
  • AppName.pdb
  • AppName.vshost.exe
  • AppName.vshost.exe.manifest
  • AppName.vshost.exe.config

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

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


其他信息

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

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

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

1 个答案:

答案 0 :(得分:1)

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

DLL Find Order

注意:在某些情况下,这些DLL已由Office部署到您的客户端PC,并且可以在GAC中进行访问。给出问题后,您可能需要更新以包含此信息。

.vshost文件用于Visual Studio调试,不需要部署。如果AppName.exe.config文件具有偏离标准.NET配置或再次偏离标准.NET配置所需的运行时信息,则您可能希望部署它。更多信息here

对于仅在编译结束时使用.exe的情况,您可能想查看一下ILMerge,它已经在这里给出了答案,尽管我不知道它如何与资源一起使用-无论您使用什么资源。

ILMerge