【问题标题】:Checking for class dlls on application launch message检查应用程序启动消息上的类 dll
【发布时间】:2011-08-24 09:32:46
【问题描述】:

有什么方法可以检查您的类 dll 文件吗?比方说:

Example.exe 有 MC.dll 和 LOD.dll

如果我将没有 dll 文件的 Example.exe 放在我的桌面上,它会给您“Microsoft .NET Framework”错误。

我想要做的是找到一些东西来检查 dll,看看它是否与 .exe 应用程序位于同一目录中,而不是它给你框架错误。我希望人们知道发生了什么,而不是人们不知道该做什么。谢谢!

【问题讨论】:

  • 我们的时间也很宝贵。
  • 您是否尝试过使用反射打开程序集并捕获任何异常?一次只能为一个裁判工作
  • 另外,他们为什么不知道该怎么做?也许您需要构建一个安装程序?
  • @Rick:那为什么要在这里发帖?我不欣赏你的不当评论。 @DustinDavis:这可能很明显,但你知道有些人在错误方面并不太聪明,他们基本上只能说“HELPPPP”......所以它会重视我的产品,让人们真正知道发生了什么开。
  • @user747815 - 你会发现说“我不想浪费时间搜索网络”不会让你在这里得到积极的结果。该网站适用于您已经考虑过、尝试过在网络上搜索但无法找到所需内容的情况。

标签: c# .net dependencies


【解决方案1】:

您应该知道 .dll 文件所在的目录,因此只需检查以确保它们在那里。如果不是,则显示消息框或其他内容。这显然必须通过一个外部应用程序来完成,然后该应用程序将启动该程序,否则它甚至永远无法运行检查。 (感谢 DustinDavis 指出需要澄清)

【讨论】:

  • 假设您的意思是一个外部应用程序,它有一个必需的引用列表并且它会检查这些,对吧?
  • 是的,如果找到所有引用,则会启动 example.exe,否则会显示一条消息。抱歉不清楚。
【解决方案2】:

查看AppDomain.AssemblyResolve 事件。当应用程序无法解析特定程序集时会触发此事件。然后,您可以提供替代位置来查找程序集,也可以抛出错误消息。

【讨论】:

  • 这可以在执行程序集中处理,是吗?
  • 对,只需订阅 AppDomain.CurrentDomain.AssemblyResolve 事件,即可对运行时无法解析的任何程序集做出反应。但是,在您使用该程序集中的一种类型之前,可能不会发生解析。
  • 这太棒了。我不知道。
猜你喜欢
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 2012-06-07
  • 2022-01-04
  • 2018-05-09
  • 2015-08-08
  • 1970-01-01
相关资源
最近更新 更多