【发布时间】:2012-11-21 13:15:30
【问题描述】:
如果我的 VB.NET 程序所需的某些 dll 丢失,当我运行它时,它会崩溃并显示典型的 Windows 错误消息,并且不提供有关错误的任何信息。
所以,我想在做任何事情之前验证所有依赖项都得到满足。但这并不是微不足道的,因为我有非托管和运行时依赖项。那么,在深入研究之前,是否有一些 CLR 设置,或者针对此问题的一些更简单的解决方案?
【问题讨论】:
-
如果您不知道您有哪些运行时依赖项,那么您可以随时从 SysInternals 的 ProcMon 实用程序中找到。您将看到您的程序正在搜索 DLL。
-
是的。但我也有使用 /clr 开关构建的 C++/CLI 程序集,它引用非托管 C++ 程序集。不知道如何处理这些。我的意思是,我知道哪个程序集引用了哪个程序集,它以通用的方式验证它们的存在,而无需对整个依赖关系树进行硬编码。
-
对,这就是 ProcMon 将向您展示的内容。在不到 2 分钟的时间内完成此操作是不可能的,您实际上必须尝试一下。没人能猜到你会看到什么。如果您需要更好的建议,请向您使用的 DLL 的所有者寻求帮助。他们总是有可用的部署说明。
-
即使我知道我的程序需要哪些 dll,它仍然会在丢失时崩溃而不提供信息。这看起来很恶心。我想显示一个消息框,上面写着“XXX.dll 丢失。重新安装应用程序可能会解决问题”。我见过很多程序这样做。
标签: .net windows vb.net assembly-resolution