【问题标题】:How can I show an error message when trying to run an exe file without its dlls?尝试运行没有 dll 的 exe 文件时如何显示错误消息?
【发布时间】:2009-12-02 12:44:00
【问题描述】:

我有一个 C# 应用程序,它有一个通过引用添加的 dll。 当我尝试从 Windows 运行 exe 文件(编译后)并且 dll 被重命名时,我希望应用程序显示错误消息。

如何在代码中做到这一点?

【问题讨论】:

    标签: c# winforms assemblies dynamic-linking dynamic-loading


    【解决方案1】:

    如果 exe 找不到任何所需的 dll,它应该已经显示错误。大致如下:

    程序无法启动,因为您的计算机中缺少 example.dll。尝试重新安装程序以解决此问题。

    你没有得到这个事实意味着几件事之一:

    a) 您的程序实际上并未引用该 dll。

    b) 您已将 dll 链接到 exe。

    c) CLR 在别处找到了 DLL(感谢 Pondidum)

    【讨论】:

    • CLR 也可能在其他地方找到了 DLL
    【解决方案2】:

    在 .NET 应用程序中,直到您第一次尝试使用丢失的 DLL 中的类时才会收到错误。

    几种可能性:

    • 编写在程序启动时运行并在每个 DLL 中调用一个类的虚拟方法的代码
    • 递归调用 Assembly.GetReferencedAssemblies() 并构建缺失 DLL 列表

    【讨论】:

      【解决方案3】:

      您的 exe 也有可能在其他地方找到所需的程序集。要检查它在哪里搜索所需的程序集,请查看this article on MSDN

      另一种可能性是使用AssemblyLoadAssemblyResolve 事件来获取有关(未)加载哪些程序集的更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多