Ich versuche, eine VC6-COM-DLL zu unserer VS2010RC C# -Lösung hinzuzufügen. Die DLL wurde mit den VC6-Tools kompiliert, um eine x86-Version zu erstellen, und wurde mit den plattformübergreifenden VC7-Tools kompiliert, um eine VC7-DLL zu generieren.Visual Studio 2010 64-Bit-COM-Interop-Problem
Die x86-Version der Assembly funktioniert einwandfrei, solange die Plattform des ausführenden C# -Projekts auf x86 festgelegt ist. Es spielt keine Rolle, ob die x64- oder x86-Version der DLL tatsächlich registriert ist. Es funktioniert mit beiden. Wenn die Plattform auf 'Any CPU' eingestellt ist, erhalte ich eine BadImageFormatException
auf der Last der Interop.<name>.dll
.
Wie für die x64-Version kann ich nicht einmal das Projekt erstellen. Ich erhalte den tlbimp Fehler:
TlbImp : error TI0000: A single valid machine type compatible with the input type library must be specified.
Hat jemand dieses Problem gesehen?
EDIT:
ich viel mehr Graben in diesem Thema gemacht habe und denke, das ist ein Visual Studio Fehler sein kann. Ich habe eine saubere Lösung. Ich bringe meine COM-Assembly mit sprachunabhängiger 'Any CPU' ein. Die Prozessarchitektur der resultierenden Interop-DLL ist x86 statt MSIL.
Möglicherweise müssen Sie die Interop von Hand für jetzt machen, um dies zur Arbeit zu bringen.
Wenn jemand einen anderen Vorschlag hat, lass es mich wissen.
Ich wünschte, ich könnte dies noch ein paar Mal abstimmen. Es ist offensichtlich, was der Fehler im Nachhinein bedeutet, aber auf den ersten Blick verwirrend. – xcud
Es funktionierte, aber ich musste separat hinzufügen Element in CSProj-Datei, damit VS mit dieser Einstellung tatsächlich starten. –
Roboblob