在构建发布版本时引用调试 dll

Posted

技术标签:

【中文标题】在构建发布版本时引用调试 dll【英文标题】:Referencing debug dlls while build Release version 【发布时间】:2019-02-14 22:23:10 【问题描述】:

我正在尝试构建我的 vb.net 项目的发布版本。我的项目引用了多个 dll(我有这些 dll 的发布和调试版本)。当我构建我的项目时,我将我的配置设置为发布(显然),但我是否还需要引用我的发布 dll 或者引用我的调试 dll 相同?我只是想知道这是否有什么不同。

【问题讨论】:

这些引用的程序集(/dll)在哪里?它们是在同一解决方案中的其他项目中,还是在磁盘上的其他地方?当您处理当前项目(编码、构建、调试)时,您是否会执行诸如单步执行其他程序集中的代码之类的操作。根据您要执行的操作(从 GAC 到 NuGet 到直接引用磁盘上的程序集),您可以通过多种方式执行此操作。通常,您最好指向发布 DLL,而不是调试构建的程序集。不要忘记,元数据应该是相同的。尝试更多地描述事物 【参考方案1】:

就调用 DLL 而言,它会以任何一种方式工作,因为 PInvoke 被用于访问入口点(假设您没有尝试单步执行 c 代码)。 PInvoke 根据文件名加载 DLL,并根据入口点名称加载函数(通过 GetProcAddress)。

就您发布的内容而言,请确保您不会出于多种原因发布调试 DLL。 例如:

调试代码比较慢。 本机调试 DLL 将引用未安装 Visual Studio 的机器不具备的其他调试库。 通常,在调试代码中,您可能不希望在交付代码中包含 assert() 指令等。 其他我忘了提

【讨论】:

以上是关于在构建发布版本时引用调试 dll的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的发布版本仍在寻找调试 DLL (MSVCR110D.dll)?

调试/引用强命名库

DLL 调试信息

确定已发布 DLL 中的调试/发布模式?没有#DEBUG

验证发布版本

使用调试模式构建时,凭据提供程序 DLL 无法正确加载