我正在创建一个简单的、独立的 .net winforms 应用程序。它引用了程序集Microsoft.SqlServer.SqlWmiManagement
.Net Framework 4 的版本可能存在或不存在于客户端计算机上。如果该程序集不存在,那么在运行时我希望我的应用程序能够正常失败而不是崩溃。
我有一个启动的组件:
...
using Microsoft.SqlServer.SqlWmiManagement;
...
try {
// do something that uses SqlWmiManagement
}
catch {
// handle the missing assembly
}
不幸的是,在组件加载时,在我的小 try 块之前抛出了未处理的异常。
这样做的正确方法是什么?
没有安装程序,这应该是一个拖放exe。
如果未找到程序集,则将触发 AssemblyResolve 事件。您可以尝试捕获它并退出该应用程序。请参阅此 MSDN http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx.
public static void Main()
{
// Note: AssemblyResolve occurs when the resolution of an assembly fails.
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
}
private static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
{
if ( args.Name.Contains("SqlWmiManagement"))
{
// assembly not found
}
return null;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)