我有一个简单的单例模式类,我的应用程序通过它与outlook集成,并且运行我的应用程序的几台计算机没有安装outlook。我已将所有互操作内容包装在try-catches中,以避免在outlook无法使用时引发异常,但我仍然会收到FileNotFound
例外的自动错误报告。
这是我班上的(相关代码):
Imports Microsoft.Office.Interop
Public Class OutlookIntegration
Private Shared _instance As OutlookIntegration
Public Shared Sub Initialize()
_instance = New OutlookIntegration()
End Sub
Private _outlookApp As Outlook.Application
Private _outlookNs As Outlook.NameSpace
Private ReadOnly _outlookEnabled As Boolean
Private Sub New()
Try
_outlookApp = New Outlook.Application
_outlookNs = _outlookApp.GetNamespace("mapi")
_outlookNs.Logon()
Catch ex As Exception
_outlookApp = Nothing
_outlookEnabled = False
Exit Sub
End Try
_outlookEnabled = True
End Sub
End Class
我得到的错误是:
消息:无法加载文件或程序集'office,版本= 11.0.0.0, Culture = neutral,PublicKeyToken = 71e9bce111e9429c'或其中一个 依赖。该系统找不到指定的文件。 System.IO.FileNotFoundException
在OutlookIntegration..ctor()
在OutlookIntegration.vb中的OutlookIntegration.Initialize()中:第7行 在ApplicationEvents.vb中的MyApplication_Startup(Object sender,StartupEventArgs e):第139行(System.IO.FileNotFoundException)无法加载文件或程序集'office,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c'或其依赖项之一。系统找不到指定的文件。
似乎我在这里缺少一些简单的东西。堆栈是否为红色鲱鱼?
答案 0 :(得分:1)
在通话过程中将私人会员加载到内存( Outlook.Application
,Outlook.NameSpace
等)时会抛出异常到OutlookIntegration
构造函数( OutlookIntegration..ctor())并且客户端计算机上不存在相应的Outlook依赖项。
有几种方法可以解决这个问题:
ctor
方法中尝试/捕捉Initialize()
声明)最好不要出于性能原因而抛出异常 - 所以#3将是我的偏好,但只要你没有连续执行此检查,你就可以使用这些选项。