Question

Je suis en train d'ajouter un VC6 COM DLL à notre solution VS2010RC C #. La DLL a été compilé avec les outils de VC6 pour créer une version x86 et a été compilé avec les outils de la plate-forme Cross VC7 pour générer une DLL VC7.

La version x86 de l'assemblage fonctionne bien aussi longtemps que la consommation C de la plate-forme # projet est réglé sur x86. Peu importe si le x64 ou la version x86 de la DLL est réellement enregistré. Il fonctionne avec les deux. Si la plate-forme est réglée sur « Any CPU » Je reçois un BadImageFormatException sur la charge du Interop.<name>.dll.

En ce qui concerne la version 64 bits, je ne peux même pas le projet de construction. Je reçois l'erreur tlbimp:

  

TlbImp: TI0000 d'erreur: Un type de machine valide unique compatible avec la   bibliothèque de types d'entrée doit être spécifié.

Quelqu'un at-il vu cette question?

EDIT:

Je l'ai fait beaucoup plus creuser dans cette question et je pense que cela peut être un bug Visual Studio. J'ai une solution propre. J'apporte dans mon assemblée COM avec le langage agnostique « Any CPU » sélectionné. L'architecture de processus de l'Interop DLL résultant est x86 plutôt que MSIL.

Peut devoir faire l'Interop à la main pour l'instant pour que cela fonctionne.

Si quelqu'un a une autre suggestion me le faire savoir.

Était-ce utile?

La solution

Ce problème peut être résolu en ouvrant le fichier csproj et en ajoutant le noeud suivant à l'un des « (Configuration) | Toute CPU » noeuds qui manquent: il

<PlatformTarget>AnyCPU</PlatformTarget>

Si ce noeud n'est pas présent TlbImp par défaut à x86 et causer des problèmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top