我正在创建一个简单的,独立的.net winforms应用程序.它引用了Microsoft.SqlServer.SqlWmiManagement.Net Framework 4 的程序集,该程序集可能存在于客户端计算机上,也可能不存在.如果该程序集不存在,那么在运行时我希望我的应用程序优雅地失败而不是崩溃.
我有一个组件开始:
...
using Microsoft.SqlServer.SqlWmiManagement;
...
try {
// do something that uses SqlWmiManagement
}
catch {
// handle the missing assembly
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,在我的小块尝试块之前,组件加载时会抛出未处理的异常.
这样做的正确方法是什么?
没有安装程序,这应该是一个拖放exe.
如果未找到程序集,则会触发AssemblyResolve事件.您可以尝试捕获并退出应用程序.请参阅此MSDN.
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |