1

在为发布编译一个简单的控制台应用程序项目后,我得到了很多输出:

  • .exe => 很好,我肯定需要这个:)
  • MyApp.exe.config => 我正在使用和更改它,没关系
  • 一些 .dll 文件 => 这些是我使用的外部库,我认为这也很好

未知:

  • 我的应用程序.pdb
  • MyApp.vshost.exe
  • MyApp.vshost.exe.config
  • MyApp.vshost.exe.manifest
  • log4net.xml => 呵呵,log4net的配置已经在MyApp.exe.config里了,为什么这里还有另一个log4net config xml?

我可以删除其中一些而不会遇到以后的麻烦吗?我可以将 .dll 以某种方式添加.exe 中(这样我就不必总是将所有 .dll 与 .exe 一起复制)?

4

4 回答 4

3

这是意料之中的,而且都是有目的的——但你是对的:你不需要任何“未知”文件,并且可以删除它们(当然也不需要分发它们)。有关信息:

  • MyApp.pdb 是调试符号;对堆栈跟踪很有用,如果有问题也可以在以后进行调试;您可以通过“高级构建设置”对话框(项目属性、构建、高级...)中的“调试信息”选项禁用此功能,但我不推荐它
  • MyApp.vshost.* 是调试器宿主进程;您可以通过禁用“启用 Visual Studio 托管进程”选项(项目属性、调试)来禁用此功能
  • log4net.xml 是智能感知注释 - 在添加引用时对 IDE 使用很有用
于 2012-08-22T09:42:28.743 回答
1

这些文件不打算分发到客户端电脑,也不用于应用程序正常工作:它们在那里(也)用于调试目的。
如果您想将 dll“合并”到您的项目中,请尝试使用 Microsoft 实用程序ILMerge

于 2012-08-22T09:42:46.747 回答
1

当您在发布配置中构建解决方案时,将没有 *.vshost.*.,这是用于调试托管过程的可执行文件。

log4net.xml 你可以删除,我相信。

于 2012-08-22T09:42:52.000 回答
1

您应该可以删除/不部署其中的大部分。如果 dll 是托管程序集,您可以使用IlMerge,它将为您将 dll 添加到 exe 中。

于 2012-08-22T09:45:05.593 回答