2009-02-10 9 views
2

Nous avons une application WinForms, écrite en VB.NET (CLR 2.0), qui fait beaucoup de choses liées à Outlook. Une des choses que nous faisons est d'ouvrir par programme un nouveau formulaire Outlook "composer un nouveau courriel", pré-rempli avec l'adresse "à".Problème .NET/COM Interop - ouverture du dialogue Outlook Mail Send

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 

Maintenant, cela fonctionne parfaitement presque partout où nous déployons l'application - l'utilisateur remplit le sujet de courrier électronique ou SMS, envoyer des clics, et nous pouvons attraper l'événement Envoyer et faire d'autres bonnes choses.

Il y a juste quelques installations où ça casse, et on ne peut tout simplement pas aller au fond des choses.

Est-ce que Donnent une indication de l'endroit où le problème pourrait être:

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) 

Pour autant que nous pouvons dire, ce ne sont que Bureau des installations en 2003, avec Outlook et Word, comme dans les cas où il fonctionne bien.

Je serais très reconnaissant pour toutes les idées - soit sur la façon de résoudre ce problème, ou sur une meilleure façon d'atteindre la même chose.

Répondre

1

J'ai eu une expérience similaire avec un Excel 2003 Add-In. Office 2003 et Office 2007 sont-ils installés sur la machine de développement? Si oui, vérifiez la section Références dans votre projet. J'avais une dépendance à Office 11, mais sous l'Office 12 l'assembly interop était utilisé. Je pense que Assembly Binding Redirection me causait le problème.

Modifier: Le example projects de Microsoft a beaucoup aidé. Un problème supplémentaire concernait les paramètres de sécurité sur certaines machines (voir le projet SetSecurity utilisé dans les exemples de projets d'installation).

2

Ok, c'est trié, et mes remerciements reconnaissants à Olli pour his answer, qui m'a mis sur la bonne voie.

Son lien 'exemples de projets' m'a conduit à this link about deploying VSTO solutions.

Dans ce que je trouve le commentaire révélateur:

« applications Microsoft Office installer les assemblages PIA uniquement si l'ordinateur de destination a le .NET Framework 1.1 ou version ultérieure. »

voyants se sont allumés - et je mis en place une machine virtuelle, sur laquelle j'ai installé (dans l'ordre suivant):

  • XP SP2
  • Office 2003 (installation par défaut)
  • .NET 3.5 SP1 (le grand redistribuable)
  • Mon application

Bingo - le problème est devenu reproductible, tout comme un autre, je wa va demander l'aide de la communauté. Comme vous pouvez l'imaginer, tous nos ordinateurs, et la plupart des clients, ont déjà .NET installé quand Office fonctionne, donc ce n'est généralement pas un problème du tout.

Une réinstallation d'Office n'a cependant pas pu être corrigée, tout comme une installation de détection et de réparation. Cependant, une installation 'add features' vous permet de sélectionner manuellement l'option de support de la programmation .NET, et le problème disparaît.

Bottom line:

Non .NET, pas Interop Assemblies primaire avec un bureau d'installation.

Encore merci Olli!

+0

De rien Chris! Honnêtement, j'ai été un peu déçu de l'expérience globale dans le développement d'un Add-In Office. Regarde très simple via l'assistant Visual Studio, mais le déploiement est douloureux. –

+0

Parlez-moi de ça. Office interop a été le fléau de ma vie pendant un certain temps. Il y a toujours quelque chose qui ne fonctionne pas correctement, nécessite une solution de contournement, donne des messages d'erreur stupides - ou les trois. Et je n'écris pas de compléments, juste des applications .NET qui automatisent Office. – ChrisA

Questions connexes