PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unterschied zwischen selbst generiertem Initerop.Assembly und einem vom VisualStudio


Elemental
2005-01-04, 10:42:56
Weiss jemand, ob es einen unterschied gibt, zwischen einem manuell mit tlbimp.exe erzeugten interop.assembly und einem, das automatisch vom visualStudio erzeugt wurde?

Ich hab ein Programm, dass benötigt ein Interop.Assembly und es funktioniert auch wunderbar, solange is das automatisch vom VS generierte Interop.assembly verwende.

Wenn ich jedoch selber mit einem Batch-Skript ein Interop.Assembly generiere:

SET TLBIMPFOLDER=C:\Programme\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin

"%TLBIMPFOLDER%\Tlbimp" "SIPLACE Pro Interface.dll" /out: Interop.SIPLACEPROINTERFACELib.dll


dann bekomme ich beim starten meines Programms eine Exception mit der Meldung:
"Could not load type SIPLACEPROINTERFACELib.Session from assembly Interop.SIPLACEPROINTERFACELib, Version=1.0.0.0, culture=neutral, PublicKeyToken=null"


Wie generiert denn das VS seine Interops? Mach ich irgendwas verkehrt beim Aufruf von Tlbimp?


Gruss
Bernd

Elemental
2005-01-05, 09:05:04
Habs gerade selber rausgefunden:
Das Problem ist der Namespace!

Wenn man mit Tlbimp ein Interop.Assembly erzeugt, wie in meinem Fall die "Interop.SIPLACEPROINTERFACELib.dll" wird der Namespace auf "Interop.SIPLACEPROINTERFACELib" gesetzt.


Wenn das Visual Studio .NET allerdings ein Interop.Assembly "Interop.SIPLACEPROINTERFACELib.dll" erzeugt, dann setzt es den Namespace auf "SIPLACEPROINTERFACELib".

Da muss man ja erstmal draufkommen :rolleyes:
Lösung des Problems: Beim manuellen Aufruf von Tlbimp mit dem Paramter /namespace explizit den Namespace angeben! :cool:


Gruss
Bernd