3

我们有一个用 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,就像在正常工作的情况下一样。

我将非常感谢任何想法 - 无论是关于如何解决这个问题,还是关于实现相同目标的更好方法。

4

2 回答 2

2

好的,它已排序,我感谢 Olli的回答,这让我走上了正轨。

他的“示例项目”链接将我带到了这个关于部署 VSTO 解决方案的链接。

我在其中发现了有启发性的评论:

“仅当目标计算机安装了 .NET Framework 1.1 或更高版本时,Microsoft Office 应用程序才会安装主互操作程序集。”

灯亮了 - 我设置了一个虚拟机,我在上面安装了(按以下顺序):

  • XP SP2
  • Office 2003(默认安装)
  • .NET 3.5 SP1(大的可再发行版)
  • 我的应用程序

宾果游戏 - 问题变得可重现,就像我要向社区寻求帮助的另一个问题一样。正如您可以想象的那样,当 Office 继续运行时,我们所有的计算机以及大多数客户的计算机都已经安装了 .NET,因此通常这根本不是问题。

不过,Office 重新安装未能修复它,“检测和修复”安装也是如此。

但是,“添加功能”安装允许您手动选择 .NET 可编程性支持选项,问题就消失了。

底线:

没有 .NET,没有 Office 安装的主互操作程序集。

再次感谢奥利!

于 2009-02-11T14:34:09.497 回答
1

我在使用 Excel 2003 加载项时也有过类似的经历。您是否在开发机器上同时安装了 Office 2003 和 Office 2007?如果是这样,请仔细检查项目中的参考部分。我对 Office 11 有依赖,但在 Office 12 互操作程序集下使用了。

我认为程序集绑定重定向给我带来了麻烦。

编辑:微软的 示例项目帮助很大。另一个问题是某些机器上的安全设置(请参阅示例设置项目中使用的 SetSecurity 项目)。

于 2009-02-10T19:30:53.910 回答