我们有一个用 VB.NET (CLR 2.0) 编写的 WinForms 应用程序,它可以执行很多与 Outlook 相关的工作。我们所做的其中一件事是以编程方式打开一个新的 Outlook 2003“撰写新电子邮件”表单,其中预先填充了“收件人”地址。
Me.WordApp = New Word.Application
Dim template As Object = System.Reflection.Missing.Value
Dim newTemplate As Object = System.Reflection.Missing.Value
Dim documentType As Object = Word.WdNewDocumentType.wdNewEmailMessage
Dim visible As Object = False
Me.WordDoc = Me.WordApp.Documents.Add(template, newTemplate, documentType, visible)
'then some other stuff
现在,这几乎在我们部署应用程序的任何地方都能完美运行 - 用户填写电子邮件主题和文本,点击发送,我们可以捕捉发送事件并做其他好事。
只有几个安装出现问题,我们无法深入了解。
以下是否给出了问题可能出在哪里的任何指示:
Could not load file or assembly 'office, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT:
0x80131040)
据我们所知,这些只是 Office 2003 安装,带有 Outlook 和 Word,就像它工作正常的情况一样。
如果有任何想法,我将不胜感激 - 无论是关于如何解决此问题,还是关于实现相同目标的更好方法。
最佳答案
好的,已经排序了,非常感谢Olli his answer ,这让我走上了正确的道路。
他的“示例项目”链接将我带到了 this link about deploying VSTO solutions .
我在其中找到了揭示性的评论:
“仅当目标计算机安装了 .NET Framework 1.1 或更高版本时,Microsoft Office 应用程序才会安装主要互操作程序集。”
灯亮了 - 我设置了一个 VM,我在上面安装了(按以下顺序):
- XP SP2
- Office 2003(默认安装)
- .NET 3.5 SP1(大型可再发行版)
- 我的申请
宾果游戏 - 问题变得可重现,就像我要向社区寻求帮助的另一个问题一样。可以想象,我们所有的计算机以及大多数客户的计算机都已经在 Office 运行时安装了 .NET,因此通常这根本不是问题。
Office 重新安装未能修复它,“检测并修复”安装也是如此。
但是,“添加功能”安装允许您手动选择 .NET 可编程性支持选项,问题就消失了。
底线:
没有 .NET,没有带有 Office 安装的主要互操作程序集。
再次感谢奥利!
关于.NET/COM Interop 问题 - 打开 Outlook 2003 发送邮件对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/533718/