Csharp/C#教程:如何尝试捕捉未找到的assembly分享


如何尝试捕捉未找到的assembly

好吧,说我有这样的应用程序:

using System; using AliensExist; // some DLL which can't be found... 

我想要的是,如果无法找到程序集DLL AlienExist,应用程序将不会返回错误 – 而是“trycatched”,类似于……:

 using System; try{ using AliensExist; // some DLL which can't be found... } catch {} 

怎么做? 我知道use关键字以后不能使用…但我现在太懒了测试它。

10倍!

你不能在try / catch中真正做到这一点,但你可以做的是处理AppDomain上的AssemblyResolve事件。

有关更多详细信息,请参阅https://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx 。

但是,您至少需要编译代码。 如果您试图“引用”可能存在或可能不存在的程序集,则需要动态加载它并从那里开始工作。

我认为你试图在运行时加载程序集,而不是编译时,正确吗?

如果是这样,请检查一下: C#在运行时加载程序集 。

老问题,但我觉得这个信息需要添加:

您不能尝试/捕获using语句,但您可以尝试/捕获程序集的解析 。

如果您按照Mike Atlas的建议手动加载程序集,您可以获得更多控制权。

此外,您可以在尝试解析之前手动validation程序集,方法是从GetEntryAssembly.GetReferencedAssemblies()中选择并比较AssemblyName.GetAssemblyName()之类的内容 。

当然,在某些情况下,您可以使用简单的File.Exists(AssemblyPath) ,但上述方法有助于validation其他程序集问题,例如版本编号或签名。

通过提供基于事件的方法, AssemblyResolve很不错。 如果你有很高的圈复杂度和/或想要与JIT一起骑行,但是比前期validation更少信息,那就太好了。

请注意快速失败的主体,以及程序集解决错误可能限制function的程度。

上述就是C#学习教程:如何尝试捕捉未找到的assembly分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1006045.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐