我正在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文件夹复制到用户具有读取权限的网络位置。然后通过UNC路径将EXE称为客户端计算机。
理想情况下,我的目标是简化最后一步,以便仅EXE出现在用户可访问的网络位置。
答案 0 :(得分:1)
您将需要AppName.exe文件及其引用的任何相关DLL。我不确定您正在使用哪些资源,但是鉴于它们存在于EXE使用的DLL中,则需要将其部署到目标计算机上。您可以在此处找到更多信息:
注意:在某些情况下,这些DLL已由Office部署到您的客户端PC,并且可以在GAC中进行访问。给出问题后,您可能需要更新以包含此信息。
.vshost文件用于Visual Studio调试,不需要部署。如果AppName.exe.config文件具有偏离标准.NET配置或再次偏离标准.NET配置所需的运行时信息,则您可能希望部署它。更多信息here。
对于仅在编译结束时使用.exe的情况,您可能想查看一下ILMerge,它已经在这里给出了答案,尽管我不知道它如何与资源一起使用-无论您使用什么资源。