gpt4 book ai didi

c# - 引用的DLL不调用也能加载吗?

转载 作者:行者123 更新时间:2023-11-30 22:48:47 28 4
gpt4 key购买 nike

环境:.NET/VS2008

大家好,

我的应用程序使用第 3 方 DLL 程序集,该程序集单独安装在某些系统(已明确标识)上,但并非全部。

这意味着在某些系统上,DLL 不存在因此不能被调用。为了解决这个问题,我有 2 个版本的应用程序(使用 2 个配置)用于 2 个用例。在其中之一中,所有对 DLL 的调用都被 #if 输出。

由于应用程序中根本没有对编译的 DLL 的调用(它们被#if'ed out),是否可以安全地假设应用程序不会尝试加载 DLL,即使它被引用?

或者我还应该排除引用吗?

注意:针对 womp 在 this question 中的评论而提问.

TIA,

最佳答案

IIRC,C# 编译器将忽略对代码中从未实际使用过的 dll 的引用。因此,如果所有代码都在 #if 中,则对 dll 的引用将不会出现在您编译的应用程序中,并且永远不会加载 dll。

顺便说一句,您可以使用 Reflector 检查这个。只需将已编译的应用程序拖放到 Reflector 中,然后查看 References 节点。我认为 ILDASM 也提供此功能。

警告:DllImport 和动态类型加载(例如,Type.GetType("type,dll"))将在 C# 编译器不知道或不关心的情况下动态加载 dll .但同样,如果在正确的 #if 中,则不会加载任何内容。

关于c# - 引用的DLL不调用也能加载吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1503701/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com