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

C# 是否可以在EXE应用程序中打包资源文件?,c#,.net,visual-studio-2012,C#,.net,Visual Studio 2012,我正在Visual Studio 2012中开发一个小型C#应用程序。该项目是一个使用.NET 4.5的控制台应用程序。我对VS2012和C#开发相当陌生——我的背景是HTML/XML和JavaScript,但经过大量的尝试和错误(以及谷歌搜索),我的应用程序按预期工作。但是,我对生成的项目文件有一个问题 当我构建要发布的应用程序时,许多文件与实际运行的EXE一起放在BIN文件夹中。这些文件的名称如下所示: AppName.exe.config AppName.pdb AppName.vsho

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

当我构建要发布的应用程序时,许多文件与实际运行的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出现在用户可访问的网络位置。

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

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

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

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


注意:如果对问题投了否决票,请解释原因或如何改进问题。感谢您在解决方案中维护哪些项目以获得DLL?你在哪里添加资源?你能提供更多的信息吗?@Andez-用我认为你想要的更新了这个问题。如果没有,请告诉我,我可以添加它