Laden...

Entwicklung im Team, aber gewisse dll's nur an Einzelplatz

Erstellt von justatester vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.785 Views
J
justatester Themenstarter:in
2 Beiträge seit 2013
vor 10 Jahren
Entwicklung im Team, aber gewisse dll's nur an Einzelplatz

Hallo miteinander

Ich habe ein Problemchen, bei dem ich nicht so richtig weiter komme.

Also: Wir sind ein Team von mehreren Personen, die an einer SW arbeiten. Ich versuche mich gerade mit der Einbindung eines neuen Gerätes. Um dieses anzusprechen habe ich vom Hersteller eine Anleitung gekriegt, in welcher er mir sagt: Installiere die SW zum Gerät und benutze dann die beiden dll's X & Y und das Gerät macht was Du willst ...
Gemäss Hersteller zeigen X & Y auf viele weitere dll's (deshalb muss die Geräte-SW installiert werden), aber als API braucht man nur diese beiden.

Ich habe herausgefunden, dass X & Y im GAC liegen, konnte auf sie verweisen und das Gerät ansteuern.

Das Problem ist jetzt, wenn die anderen aus dem Team das Projekt erstellen wollen, wird das nicht klappen, denn nur ich habe die Geräte-SW installiert.

Ich dachte ich könnte die dll's aus dem GAC holen und ins Projekt einfügen, ohne sie dann ins Ausgabeverzeichnis zu kopieren - so würde das erstellen klappen, was auch der Fall ist.

Ich dachte weiter, dass auf einem PC mit der Geräte-SW drauf, die erstellte SW dann X & Y aus dem GAC nimmt und das ganze läuft. Wenn ich jetzt aber die SW starte bekomme ich folgende Fehlermeldung:> Fehlermeldung:

System.BadImageFormatException: Die Datei oder Assembly "Z" oder eine Abhängigkeit davon wurde nicht gefunden. Die Assembly wird von einer Laufzeit erstellt, die aktueller als die derzeit geladene Laufzeit ist, und kann nicht geladen werden.

... und jetzt stehe ich ein bisschen auf'm Schlauch ...

Wieso kommt jetzt auf einmal eine Fehlermeldung betreffend dll Z? Die Datei existiert genau da wo sie gesucht wird. Und was hat es mit dieser "aktuelleren Laufzeit" auf sich ...? Ich blicke wirklich nicht mehr durch.

Kann mich jemand auf den richtigen Weg leiten, damit

  • ich an der Ansteuerung des Gerätes arbeiten kann
  • meine Kollegen trotzdem mal die SW erstellen können, ohne die Geräte-SW zu installieren
  • und das Gerät auf einem PC mit der Geräte-SW auch angesteuert wird.

Ich bin für alle Vorschläge offen ...

Danke & Gruss
JustATester

16.824 Beiträge seit 2008
vor 10 Jahren

Die erste Frage ist eigentlich: erlaubt der Hersteller Dein Vorgehen überhaupt, ist dies in der Lizenz erlaubt?
Wenn nein, und das ist relativ üblich, hat sichs eigentlich erledigt und Du musst die SW auf allen Geräten installieren.

Wenn ja, was ich bezweifle: musst Du eben feststellen, welche anderen DLLs von Deiner Software alles benutzt werden. Du referenzierst zwar nur 1-2 Stück, aber die verwenden wieder andere DLLs, die ebenfalls im GAC liegen.
Vollkommen legitim, wahrscheinlich und ebenfalls üblich.

Und > Fehlermeldung:

System.BadImageFormatException ist in 99% der Fälle ein Fehler bzgl. 32 und 64 Bit.

114 Beiträge seit 2009
vor 10 Jahren

DotPeek ist ein gutes Tool um Abhängigkeiten zwischen Assemblies herauszufinden.

J
justatester Themenstarter:in
2 Beiträge seit 2013
vor 10 Jahren

Hallo nochmals

Vielen Dank für die Input's.

@Abt:
Betreffend Lizenz kann ich (noch) keine Aussage machen. Ich denke aber nicht, dass es da Probleme gibt, denn unsere Anforderungen in dieser Hinsicht wurden bereits bei der Evaluation des Gerätes entsprechend formuliert.
Na ja, ich hab natürlich noch nicht das Kleingedruckte gelesen ... 😉

Dein Hinweis betreffend BadImageFormatException hat mich aber weiter gebracht. Es hatte zwar nicht mit 32/64 bit zu tun, dafür mit der .Net Version. => angepasst und schon läuft es, wie ich es mir vorstellte

@Levion:
Das Tool sieht wirklich spannend aus. Heruntergeladen ist's schon, jetzt brauch ich nur mal ne ruhige Minute um ein bisschen damit zu spielen ...

Nochmals vielen Dank und ein schönes Weekend !!!

Gruss
JustATester

4.221 Beiträge seit 2005
vor 10 Jahren

Bei der BadImageFormatException stand ja schon drin dass es an der Version liegt 😃

--> Die Assembly wird von einer Laufzeit erstellt, die aktueller als die derzeit geladene Laufzeit ist, und kann nicht geladen werden.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...