VB.NET:VS2005构建的.EXE
是否可以作为独立EXE
部署?
当我将VS2005中的模式更改为“Release”并构建解决方案时,bin\Release
目录随后包含解决方案.EXE
文件,还包含.pdb
,{{1} }和vshost.exe
文件。什么是这些额外的文件,是否必要?
我将.xml
文件复制到另一台机器并且它正确执行,但是第一次执行时出现了很大的延迟 - 此后它就像任何其他程序一样。这是什么原因,它可以帮助吗?是因为Release文件夹中的其他3个文件不在那里吗?
答案 0 :(得分:2)
您应该能够运送EXE。 PDB和VSHOST文件用于调试,您应该能够将Release版本配置为不生成这些文件。您可以在项目属性的“编译”选项卡的“高级编译器设置”对话框中进行设置。 alt text http://philippursglove.com/stackoverflow/compilerdebugoptions.png (对于Amissisco来说,指出它是VS2005 / 2008中的相同对话框。)
我想象你第一次运行程序时遇到的'重大延迟'是因为.NET Framework被加载到内存中(可能然后被分页回到磁盘) - 不幸的是,没有多少回合那个。您可以尝试向其投掷硬件 - 内存和固态磁盘可能会提高速度,但如果您的应用程序将在大量PC上发布,则可能不是一个经济高效的选择。但是,这应该仅在机器重启后第一次启动应用程序时进行,这就是为什么后续启动应用程序的速度更快。
答案 1 :(得分:2)
用于启动项目的项目模板没有非常优化的设置。结果你会变得杂乱无章。它很容易修复。从Project + Properties,Compile选项卡开始。确保选中Release版本,左上角的组合框标记为Configuration。
.pdb文件包含调试符号。尽管您获得了更多信息性异常消息,但您不需要它用于Release版本。堆栈跟踪将包含行号。但是,您无法信任它们的发布版本。单击“高级编译选项”,“生成调试信息=无。”
.xml文件包含IntelliSense信息,当您在源代码中使用XML文档时,它将生成。意味着用于另一个项目中引用的程序集,对于EXE项目来说毫无意义。关闭“编译”选项卡上的“生成XML文档文件”选项。
.vshost.exe文件是用于调试应用的帮助程序。它托管自定义版本的CLR,配置不同以帮助调试时出现安全问题。它还使得Console.WriteLine()的输出出现在Visual Studio Output窗口中。为Release版本创建它没什么意义。选择“调试”选项卡,然后取消选中“启用Visual Studio主机进程”选项。
进行这些更改和重建后,您应该只在bin \ Release文件夹中保留.exe文件。
慢启动是所谓的.NET框架程序集的“冷启动”。它是由缓慢或分散的硬盘驱动器引起的。由于以前从未加载过DLL,因此磁盘驱动器需要通过GAC来查找文件。您可以通过对磁盘进行碎片整理来改进它。冷启动永远不会像热启动那么快。
Microsoft Office和Adobe Acrobat使用的一个经典技巧是通过在登录时加载DLL来预热文件系统缓存。它们在Startup文件夹或Run注册表项中称为“optimizer”。非常讨厌顺便说一下,他们放慢了其他程序的速度。您可以通过编写自己的小.NET程序来做同样的事情,该程序除了创建一些类之外什么都不做。在Startup文件夹中放一个快捷方式。
答案 2 :(得分:0)
部署只需要.Exe文件。但它最好创建一个设置。如果您使用的是App.Config文件/应用程序设置,则还需要复制exename.config文件。
答案 3 :(得分:0)
是的,您可以将它作为独立的EXE与任何不属于.NET Framework的第三方DLL以及其他资源(如application.config)一起部署。图像和/或其他媒体资产。
.pdb包含额外的符号调试信息,您的应用程序无需运行该信息。它旨在帮助调试,以便您在调试器中看到源代码而不是汇编代码。
vshost.exe仅供Visual Studio使用,但不太确定它的确切用途。
这三个文件(.pdb,vshost.exe和.xml)是否与.exe一起出现不应影响应用程序的加载速度。由于.NET应用程序必须在首次运行时进行编译,因此您遇到的延迟应该部分归因于此。