c# - 是否可以在 EXE 应用程序中打包资源文件?
问题描述
我正在 Visual Studio 2012 中开发一个小型 C# 应用程序。该项目是一个使用 .NET 4.5 的控制台应用程序。我对 VS2012 和 C# 开发相当陌生 - 我的背景是 HTML/XML 和 JavaScript,但经过大量试验和错误(以及 Google 搜索)后,我的应用程序按预期工作。但是,我对生成的项目文件有疑问。
当我构建应用程序以进行发布时,许多文件与您运行的实际 EXE 一起放置在 BIN 文件夹中。这些文件的名称如下:
- 应用名称.exe.config
- 应用名称.pdb
- AppName.vshost.exe
- AppName.vshost.exe.manifest
- AppName.vshost.exe.config
该文件夹还包括用作资源文件的两个 DLL 文件,以及一些类似上述命名的附加文件,但使用 DLL 文件名而不是“AppName”。每次构建应用程序时只更新三个文件,所以我想知道是否需要所有这些文件。如果可能的话,我想简化复制到生产中的文件数量。
EXE 工作是否需要这些附加文件,如果需要,是否可以将它们打包到 EXE 本身以简化部署过程?
附加信息
有问题的应用程序引用了 Office 2016 产品中包含的两个 DLL 文件。我勾选了嵌入引用的选项,这显然是它将 DLL 文件复制到项目文件夹的原因。
目前,我的部署过程是将所有文件(*.exe 以及上面提到的文件)从项目的 BIN 文件夹复制到用户具有 READ 访问权限的网络位置。然后通过 UNC 路径将 EXE 称为客户端计算机。
理想情况下,我的目标是简化最后一步,以便只有 EXE 出现在用户可访问的网络位置。
解决方案
您将需要 AppName.exe 文件和它引用的任何相关 DLL。我不确定您使用的是什么资源,但鉴于它们存在于您的 EXE 使用的 DLL 中,因此需要将其部署到目标计算机上。您可以在此处找到更多信息:
注意: 这些 DLL 可能已经由 Office 部署到您的客户端 PC 并且可以在 GAC 中访问。鉴于问题,您可能需要更新以包含此信息。
.vshost 文件用于 Visual Studio 调试,不需要部署。如果 AppName.exe.config 文件具有偏离标准 .NET 配置所需的运行时信息,或者您的应用程序中包含应用程序设置,您可能希望部署该文件。更多信息在这里。
至于在编译结束时只有一个 .exe,您可能想查看 ILMerge ,它已经在这里有了答案,尽管我不知道它如何处理资源 - 您使用的是什么资源。
推荐阅读
- php - 是否可以在特征中输入提示 $this?
- synchronization - 用于托管依赖项的片段着色器
- javascript - 如何在AngularJS的for循环中在另一个HTTP调用中调用一个HTTP调用?
- python - 如何解决python keyerror
- python - spyder-anaconda 在安装 ax-platform lib 后突然停止工作
- javascript - 不存在的对象字段不会引发语法错误
- typescript - IDE - 在库/桶之间移动文件时自动更新导入
- reactjs - 如何在 iis 上部署 React Next.JS?
- python-3.x - 为什么 subprocess.check_output 会引发错误 CalledProcessError
- angular - 为什么同一个对象根据访问方式有 2 个不同的值?