我们有一个用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,就像它工作正常的情况一样。
我会非常感谢任何想法 - 无论是如何解决这个问题,还是想要更好地实现同样的目标。
答案 0 :(得分:2)
好的,它已经整理好了,我感谢Olli his answer让我走上正轨。
他的“示例项目”链接引导我this link about deploying VSTO solutions。
我在其中找到了具有启发性的评论:
“仅当目标计算机安装了.NET Framework 1.1或更高版本时,Microsoft Office应用程序才会安装主互操作程序集。”
灯亮了 - 我设置了一个VM,我安装了它(按以下顺序):
Bingo - 这个问题变得可以重现了,就像另一个我要问社群的帮助一样。可以想象,当Office继续运行时,我们所有的计算机和大多数客户都已经安装了.NET,所以通常它根本不是问题。
Office重新安装无法修复,但“检测和修复”安装也是如此。
但是,“添加功能”安装允许您手动选择“.NET可编程性支持”选项,问题就会消失。
底线:
没有.NET,没有Office安装的主互操作程序集。
再次感谢Olli!
答案 1 :(得分:1)
我对Excel 2003加载项有类似的经验。您是否在开发计算机上安装了Office 2003和Office 2007?如果是这样,请检查项目中的引用部分。我对Office 11有依赖,但在Office 12互操作程序集下面使用了。
我认为Assembly Binding Redirection给我带来了麻烦。
编辑:微软的example projects帮了很多忙。另一个问题是某些机器上的安全设置(请参阅示例安装项目中使用的SetSecurity项目)。