【问题标题】:Avoiding File Not Found Exception with Outlook Interop使用 Outlook 互操作避免文件未找到异常
【发布时间】:2012-12-21 05:39:13
【问题描述】:

我有一个简单的单例模式类,我的应用程序通过它与 Outlook 集成,而运行我的应用程序的几台计算机没有安装 Outlook。我已将所有互操作内容封装在 try-catch 中以避免在 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:line 7 中的 OutlookIntegration.Initialize()
在 ApplicationEvents.vb:line 139 中的 MyApplication_Startup(Object sender, StartupEventArgs e)

(System.IO.FileNotFoundException) 无法加载文件或程序集 'office, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' 或其依赖项之一。系统找不到指定的文件。

似乎我在这里遗漏了一些简单的东西。堆栈跟踪是红鲱鱼吗?

【问题讨论】:

    标签: vb.net com outlook interop


    【解决方案1】:

    在调用@987654323 期间,当您的私人成员 被加载到内存(Outlook.ApplicationOutlook.NameSpace)时引发异常@构造函数 (OutlookIntegration..ctor()) 和适当的 Outlook 依赖项在客户端计算机上不存在。

    有几种方法可以解决这个问题:

    1. 在构造函数抛出此异常时处理错误(在您的 Initialize() 方法中尝试/捕获 ctor 声明
    2. 创建另一个仅测试是否安装 Outlook 的类(避免使用私有成员
    3. 阅读 Windows 注册表项,了解 Outlook 是否存在

    出于性能原因,最好不要抛出异常 - 所以#3 是我的首选,但只要您不经常执行此检查,您应该可以使用这些选项中的任何一个。

    【讨论】:

    • 我选择了 1,因为每次应用程序运行只能调用一次,这是最简单的方法。
    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2016-02-02
    • 2017-04-07
    相关资源
    最近更新 更多