[Gelöst] Regasm und NAV

27. Oktober 2009 16:09

Hallo

Ich habe mit Visual-Studio eine .NET-DLL erstellt.
In den Projektoptionen setze ich den Haken "Für com-interop registrieren".
Auf meinem Rechner läuft alles wunderbar. Die DLL kann ich von NAV aus als Automation verwenden.

Wenn ich die DLL nun auf einen anderen Rechner kopiere und mittels REGASM registriere, sehe ich zwar die DLL und kann diese als Variable des Typs Automation verwenden.
Ebenso kann ich die CodeUnit in NAV mit diesem Automation kompilieren.
Zur Laufzeit erscheint dann allerdings die Meldung:
Diese Meldung ist für C/AL-Programmierer:
Für das OLE-Control oder den Automationserver xyz konnte keine Instanz erstellt werden.
Prüfen Sie, ob das Control oder der AutomationServer korrekt installiert und registiert wurde.

Kann mir jemand einen Tipp geben wieso?
Was ist der Unterschied zwischen "Für com-interop registrieren". und einer manuellen Registrierung mittels REGASM?

Vielen Dank
Zuletzt geändert von martinst am 27. Oktober 2009 17:41, insgesamt 1-mal geändert.

Re: Regasm und NAV

27. Oktober 2009 16:37

Hast Du auch ein tlb-Datei? Hast Du die auch registriert? Was spricht gegen ein Setup-Projekt?

Re: Regasm und NAV

27. Oktober 2009 16:41

hallo vsnase

Ja, ich habe eine TLB-Datei bzw. die TLB wird durch REASM erzeugt.
SETUP-Projekt? Eigentlich nichts. Habs nur noch nie gemacht.
Ich schau mal, ob die ich schlau werde.

Aber:
Was ist der Unterschied zwischen "Für com-interop registrieren". und einer manuellen Registrierung mittels REGASM?

Gruss

Re: Regasm und NAV

27. Oktober 2009 16:57

Hallo martinst,
(endlich kann ich mich mal revanchieren :-) )

schau mal hier:
Automation-Methode nicht gefunden

Re: Regasm und NAV

27. Oktober 2009 17:08

Hallo Mikka

Leider auch nicht. Wenn ich die DLL in das Verzeichnis C:\Windows\Assembly ziehen will, erscheint die Meldung:
Die gefundene Assembly hat keine starken Namen!

Mein Gott, wie war die Welt doch einfach mit Delphi ActiveX und NAV :-)

Gruss

Re: Regasm und NAV

27. Oktober 2009 17:35

Noch was. Welches Betriebssystgem hast Du auf dem Entwicklungsrechner und welches auf dem Du die dll registrieren willst?

Re: Regasm und NAV

27. Oktober 2009 17:41

Ich habs :-D

Im Setup-Projekt muss bei der DLL das Propertie Register den Wert vsdraCOM haben.
Standardmässig steht da vsdraDoNotRegister.

Das wars. Nun kann die DLL mit dem Setup-Programm installiert werden und funktioniert.
Vielen Dank.

Re: Regasm und NAV

27. Oktober 2009 17:41

:-(
Och menno, jetzt hab ich mal gedacht ich könnte helfen und denn sowas...
Zumidest hat du einen neuen Hinweiß, das das Assambly einen starken Namen haben muß. (da steht ja einiges bei msdn)

Re: Regasm und NAV

27. Oktober 2009 17:59

martinst hat geschrieben:Ich habs :-D

Im Setup-Projekt muss bei der DLL das Propertie Register den Wert vsdraCOM haben.
Standardmässig steht da vsdraDoNotRegister.


Das Du doch ein Setup-Programm verwendest hast Du aber vorher noch verneint.

mikka hat geschrieben:Zumidest hat du einen neuen Hinweiß, das das Assambly einen starken Namen haben muß.


Kann ich so nicht bestätigen. Ich habe hier COM-DLL-Projekte ohne Strong Name und die funktionieren mit NAV trotzdem.

Aber man kann an Kleinigkeiten verzweifeln. Win7 (und vermutlich auch Vista) sind etwas pingelig was die Adminrechte anbelangt. So kann ein Projekt wie dieses hier daran scheitern, dass man VS nicht explizit als Administrator startet. Ein User mit Adminrechten reicht nicht aus und es kommt zu Fehlern wie oben beschrieben.

Re: [Gelöst] Regasm und NAV

27. Oktober 2009 18:16

Das Du doch ein Setup-Programm verwendest hast Du aber vorher noch verneint.


Das habe ich auch erst auf Dein Anraten erstellt.
So schnell geht das ;-)

Re: [Gelöst] Regasm und NAV

27. Oktober 2009 22:14

War dein Problem möglicherweise, dass die DLL nicht im NAV Zugriff, sprich im Programmverzeichnis lag? Da sie keinen starken Namen hat, lag sie ja nicht im GAC, wo sie auf jeden Fall für alle Applikationen zur Verfügung gestand hätte.

Re: [Gelöst] Regasm und NAV

28. Oktober 2009 09:01

SilverX hat geschrieben:War dein Problem möglicherweise, dass die DLL nicht im NAV Zugriff, sprich im Programmverzeichnis lag? Da sie keinen starken Namen hat, lag sie ja nicht im GAC, wo sie auf jeden Fall für alle Applikationen zur Verfügung gestand hätte.


Ist das so? Meine dll's liegen in einem eigenen Verzeichnis unterhalb von c:\programme, haben keinen Strong Name uns sind trotzdem von NAV zu erreichen. Ich meine zwar auf MSDN mal gelesen zu haben, dass ab bestimmten Versionen Strong Names notwendig sind, aber es geht auch so - bis jetzt.

Volker

Re: [Gelöst] Regasm und NAV

28. Oktober 2009 16:20

Ich glaube dein Problem ist, dass du die DLL nicht signiert hast

Dies geht in Visual Studio unter Projekt-> <DeinProjektName>-Eigentschaften-> Signierung. danach kann su es in Windows/Assembly ziehen.

Gruß Andy

Re: [Gelöst] Regasm und NAV

28. Oktober 2009 16:34

Ich glaube dein Problem ist, dass du die DLL nicht signiert hast


Danke für den Tipp.
Ich lasse es im Moment aber bleiben. Mit dem Setup-Programm funktionierts ja 1A.

Danke und Gruss