尝试运行没有 dll 的 exe 文件时如何显示错误消息?

发布于 2024-08-13 01:07:51 字数 117 浏览 4 评论 0原文

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

我怎样才能在代码中做到这一点?

I have a C# application which has a dll added by reference.
When I try to run the exe file from Windows (after compilation) and the dll is renamed I want the application to show an error message.

How can I do it in code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

﹏半生如梦愿梦如真 2024-08-20 01:07:51

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

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

您没有得到此信息的事实意味着以下几件事之一:

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

b) 您已将 dll 链接到 exe 中。

c) CLR 在其他地方找到了 DLL(感谢 Pondidum)

If the exe can't find any required dlls it should already display an error. Something along the lines of:

The program can't start because example.dll is missing from your computer. Try reinstalling the program to fix this problem.

The fact that you're not getting this implies one of several things:

a) The dll isn't actually referenced by your program.

b) You've linked the dll into the exe.

c) The DLL has been found elsewhere by the CLR (thanks Pondidum)

兔小萌 2024-08-20 01:07:51

在 .NET 应用程序中,直到第一次尝试使用缺少的 DLL 中的类时才会出现错误。

有以下几种可能性:

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

In a .NET app you won't get an error until the first time you try to use a class in the missing DLL.

A couple of possibilities:

  • Write code that runs on program startup and calls dummy methods on one class in each DLL
  • Recursively call Assembly.GetReferencedAssemblies() and build a list of missing DLLs
时光无声 2024-08-20 01:07:51

您的 exe 也可能在其他地方找到所需的程序集。要检查它在哪里搜索所需的程序集,请查看MSDN 上的这篇文章

另一种可能性是使用 AssemblyLoad 或 < a href="http://msdn.microsoft.com/en-us/library/system.appdomain.assembleresolve.aspx" rel="nofollow noreferrer">AssemblyResolve 事件以获取有关哪些程序集的更多信息(未)加载。

Also it would be possible that your exe finds the needed assembly somewhere else. To check where it search for a needed assembly check out this article on MSDN.

Another possibility would be to use the AssemblyLoad or AssemblyResolve events to get more informations about which assemblies are (not) loaded.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文