一个DLL文件包含什么?调试DLL和发布DLL有什么区别?

4
我有一个“Windows Service”(发布版本),我替换了以调试模式构建的DLL并尝试启动服务。它抛出了一个错误:“无法加载文件或程序集“名称”或其某个依赖项。尝试加载格式不正确的程序。”但是,当我用以发布模式构建的DLL替换后,服务成功启动了。我的问题是,“为什么以调试模式构建的DLL和以发布模式构建的DLL之间存在差异?有何区别?”

从未见过“未针对正确模式构建等”错误消息。你肯定可以更好地记录这个消息吧? - Hans Passant
2个回答

7
这两者最大的区别在于:debug版本会输出完整的符号调试信息来帮助调试应用程序,同时不考虑代码优化。而release版本则不会输出符号调试信息,并且会进行代码执行优化。此外,由于release版本不会输出符号信息,因此最终可执行文件的大小要小于debug版本。 DLL文件通常位于bin目录中,是编译后的源代码,除非反汇编,否则无法修改它。若要修改,需要获取源代码并对其进行更改,然后将其编译为新的DLL文件。

4

区别在于调试版本包含用于调试的额外数据(符号名称等),并且链接到使用调试版本的dll(通常是运行时dll)。

后者是导致问题的原因。

如果需要调试信息,请尝试在发布版本中使用日志文件,而不是在现场运行调试版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接