INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

.NET dll - wohin damit?



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

27.02.2013, 16:18
Beitrag #1

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
.NET dll - wohin damit?
Hallo Forengemeinde,

habe einen Messverstäkerer zu dem eine .NET DLL mitgeliefert wird.
Der Installer spielt mir eine proprietäre Software auf die Platte
zum konfigurieren und auslesen sowie LabView Treiber und noch
ein paar Sachen mehr. Nun habe ich mehrere Verzeichnisse, in der
diese DLL, in verschiedenen Versionen, existiert. Das hat auch
schon zu Konflikten geführt.

Welche Möglichkeiten habe ich, um diesen Versionswirrwar zu vermeiden?
Folgendes hab ich schon ausprobiert:

1) Die DLL dem LabView Projekt hinzugefügt. Wenn ich aber mein VI
startet, sucht es trotzdem kurz nach der DLL, obwohl sie im selben
Verzeichnis wie das VI liegt.
Ich bekomme zudem ständig Meldungen, dass die DLL unter einem
anderen Pfad gefunden wurde, als wie erwartet, wenn ich die
Beispiel VIs des Herstellers verwende. Jedesmal sind Änderungen
zu speichern.

2) Alle reduntanten DLLs gelöscht, so dass auf dem Rechner nur noch
eine DLL mit der Version vorliegt, die ich haben möchte. Dabei wird
funktioniert aber die proprietäre Software nicht mehr, die ich gerne
weiterhin zur Kontrolle einsetzten möchte.
Habe versucht die DLL mit Adminrechten per Regsvr32 zu registrieren.
Trotzdem startet das Programm nicht, weil es die DLL vermisst, auch noch
nach einem Neustart.

Wie verwende ich nun eine solche DLL richtig? Ich hätte sie gern
zentral an einer Stelle, entweder bei meinem VI oder im Windows
Verzeichnis, so dass alle Programme darauf zugreifen.


LG
Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.03.2013, 23:10
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: .NET dll - wohin damit?
.Net assemblies haben spezielle Anforderungen wo sie liegen müssen. Standard kann .Net nur Assemblies laden die entweder im gleichen Verzeichnis wie das Executable des aktuellen Prozesses abegelegt sind oder aber im Global Assembly Cache (GAC). LabVIEW fügt da noch das Verzeichnis hinzu, in dem die Projektdatei liegt (wenn man ein Projekt benützt).

Um eine Assembly im GAC ablegen zu können muss sie sogenannt strongly named sein, was besagt dass sie eine vollständige Versionsnummer haben muss und vom Herausgeber signiert sein muss.

Das heisst grundsätzlich dass man eine strongly named Assembly sowohl im GAC, im Verzeichnis wo LabVIEW.exe liegt als auch im Verzeichnis wo die LabVIEW Projektdatei liegt ablegen kann. Für ein LabVIEW Executable sollte man die Assembly im gleichen Verzeichnis ablegen lassen wie das Executable ausser die Assembly wird im GAC installiert was man dann auch auf allen anderen Computer wo die Applikation laufen soll so machen sollte.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.03.2013, 15:00
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: .NET dll - wohin damit?
Alle Achtung, für mich kommen hier nie gehörte Begriffe vor, und leider habe ich die höheren Weihen der Software-Wissenschaft nie an mir erfahren.
Also wäre ich nach der Brecheisen-Methode vorgegangen: Die allein für LV bestimmte DLL umbenennen, und die Treiber-VIs, in denen darauf zugegriffen wird, entsprechend editieren. Oder hätte die Sache, abgesehen von ihrer Uneleganz, einen Haken?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.03.2013, 07:52
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: .NET dll - wohin damit?
Umbenennen der DLL ist für .Net Assemblies nicht genügend. Der DLL Name braucht nichts mit dem Assemblynamen zu tun zu haben, wie eine Applikation ihn benützt um die Assembly zu laden. Der steht in der Assembly selber und darum verwendet .Net wohl auch nur diese eingeschränkte Anzahl Directories die nach allfälligen Assemblies durchsucht werden. Der GAC baut automatisch ein Verzeichnis auf das einfach indiziert werden kann, und das Executable Directory zu durchsuchen ist ein verantwortbarer Aufwand da eine Applikation wohl kaum tausende unnötige Assemblies in ihrem Verzeichnis haben wird. Der Vorteil ist das das ganze Getue mit regserv32 komplett entfällt da nichts mehr in einer sich immer mehr ausweitenden Registry abgespeichert werden muss.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.03.2013, 14:44
Beitrag #5

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
RE: .NET dll - wohin damit?
Danke für deine Erklärung Rolf!

In den Explorer einfach das GAC Verzeichnis öffnen %SystemRoot%\assembly
und per Drag & Drop die DLL rüberkopieren, fertig. Dazu muss man allerdings
Administratorrechte besitzen.
Die DLL liegt jetzt zentral verfügbar auf dem Rechner, keine doppelte Versionen
und sowohl das LabView VI als auch die mitgelieferte Software können auf die DLL
zugreifen - super.

Gruß, Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: