[VB.Net / VB] VB.Net COM-DLL verursacht Automatisierungsfehler

06/10/2010 - 11:26 von Stefan Dase | Report spam
Moin allerseits,

dank Jochen Kalmbachs Hilfe (Threat vom 01.10.10) konnte ich eine
COM-DLL mit VB.Net erstellen und auch erfolgreich in ein Projekt einbinden.

Nun möchte ich die Anwendung auf einem Terminalserver installieren und
erhalte beim Instanzieren eine Klasse aus der DLL einen
"Automatisierungsfehler" ohne weitere Hinweise.

Da mein Entwicklungsrechner ein x64-System ist, vermutete ich zuerst ein
Problem zwischen 32- und 64-Bit. Daher habe ich die DLL direkt auf dem
Server komplett neu erstellt und als Ziel-CPU x86 angegeben.

Was funktioniert:
- DLL erstellen (neuer Build)
- DLL mittels Regasm.exe registrieren, TLB wird erstellt
- TLB als Verweis in VB6 einfügen

Was nicht funktioniert:
- zur Lauftzeit eine Instanz der Main-Klasse erstellen

Rahmenbedingungen:
- lokal: Windows XP x64
- Server: Windows Server 2003
- Visual Studio 2010
- verwendetes Framework v4.0

Vielleicht hat noch jemand einen Tipp, as ich noch versuchen könnte?
Stefan
 

Lesen sie die antworten

#1 Armin Zingler
06/10/2010 - 13:20 | Warnen spam
Am 06.10.2010 11:26, schrieb Stefan Dase:
Moin allerseits,

dank Jochen Kalmbachs Hilfe (Threat vom 01.10.10) konnte ich eine
COM-DLL mit VB.Net erstellen und auch erfolgreich in ein Projekt einbinden.

Nun möchte ich die Anwendung auf einem Terminalserver installieren und
erhalte beim Instanzieren eine Klasse aus der DLL einen
"Automatisierungsfehler" ohne weitere Hinweise.

[...]

Vielleicht hat noch jemand einen Tipp, as ich noch versuchen könnte?
Stefan



Die DLL muss im Verzeichnis der ausführenden Exe (auch VB6.exe)
liegen, oder in einem Verzeichnis, das in der anwendung.exe.config
(auch vb6.exe.config) angegeben ist. Möglicher Inhalt:

<?xml version ="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Assemblies"/>
</assemblyBinding>
</runtime>
</configuration>

Wobei hier da Unterverzeichnis "Assemblies" heißt.

siehe auch:
http://msdn.microsoft.com/en-us/library/4191fzwb(VS.90).aspx
http://msdn.microsoft.com/en-us/library/823z9h8w(VS.90).aspx

Registrieren mit Regasm alleine genügt also nicht.

Armin

Ähnliche fragen