如何从异常中获取丢失的引用

How to get missing references from Exception

我刚刚在新服务器上部署了我的应用程序。

当我启动它时,我得到了这个异常。

System.IO.FileNotFoundException: Could not load file or assembly 'PDFNet.dll'
or one of its dependencies. The specified module could not be found.

经过几个小时的调试和重新添加引用,我发现了 dependency walker.

原来新服务器丢失了 Microsoft Visual C++ 2010 Redistributable Package

现在我的问题是:

有没有办法在运行时从异常或其他地方获取该信息,以便我可以显示有用的消息框并正确记录错误?

正如对答案的评论所述,默认情况下此信息不可用。

但是,问题之一是部署。

I've just deployed my app on a new server.

既然部署到服务器,那么你就知道它是 64 位还是 32 位,你可以一次性安装依赖项(或将其作为部署依赖项的一部分)。

或者您可以将两个 C++ 运行时 DLL 放入使用 PDFNet 的进程的工作目录中,如果该位置明显且稳定。

所以我不建议费心进行运行时检查,这很重要,而只是确保在创建新服务器时清楚这种依赖性。一旦到达那里,并且假设没有人删除 DLL,那么它将始终正常工作。

I after hours of debugging and re-adding references

对此造成的任何不便,我们深表歉意。对于未来的读者,此信息可在此处获得。 https://www.pdftron.com/documentation/windows/guides/deployment#net