Schlagwort-Archive: DevExpress

Build Server endlich ohne DevExpress

DevExpress ist leider alles andere als vorbildlich, was den Einsatz auf Build Servern angeht. Weder bietet das Unternehmen NuGet Packages, noch lässt sich die Lizenzprüfung auf dem Build Server deaktivieren.

Mit einem kleinen Trick lässt sich aber die Installation umgehen. Hierzu ruft ihr den Installer auf dem Build Server/Agent auf, loggt euch mit euren Daten an dem unten aufgeführten Screenshot ein und brecht nach erfolgreichem Login ab einfach ab.

DevExpress Login Dialog

Damit wurden mehrere Registry Einträge geschrieben, die leider maschinenspezifisch sind. Diese findet ihr hier:

  • HKLM\SOFTWARE\Classes\Licenses378852D-D597-4A32-B6D9-680A16A3CDA6\***
  • HKLM\SOFTWARE\Classes\Licenses\6F0F8269-1516-44C6-BD30-0E90BE27871C\***

Wenn ihr in den Projekten dann DLL-Referenzen aus einem Repository-Verzeichnis verwendet oder euch eigene NuGet Packages baut, benötigt ihr in Zukunft keine Installation mehr. Das gilt auch für Developer, die nicht an der UI mitentwickeln.

Build Server Fehler mit licenses.licx

Ich hatte bereits früher über die Problematik gebloggt, dass Frameworks, welche Lizenzdaten beim kompilieren verarbeiten, auf Build Servern wie Team City Probleme machen können. DevExpress ist so ein Framework. Inzwischen haben wir in unserem Team eine Lösung gefunden: Die licenses.licx Dateien werden werden auf dem Build Server geleert (genauer: die vorhandenen Dateien werden durch leere ersetzt). Jetzt funktioniert alles problemlos, sodass Fehlermeldungen wie die unten der Vergangenheit angehören:

“My Project\licenses.licx(2): error LC0004: Exception occurred creating type ‚DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v11.2, Version=11.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a‘ System.TypeInitializationException: Der Typeninitialisierer für "DevExpress.XtraTab.XtraTabControl" hat eine Ausnahme verursacht. —> System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. —> System.IO.FileNotFoundException: Die Datei oder Assembly "EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

Build Server Fehler mit licenses.licx

Wie viele andere sicherlich auch, verwenden wir ein Drittherstellerframework. Im vorliegenden Fall geht es um das kostenpflichtige DevExpress. Wir hatten kürzlich auf unserem Build Server mit Teamcity, auf welchem man DevExpress ebenfalls installieren muss (kurze Info: dafür benötigt man keine separate Lizenz), folgenden Compiler Fehler:

My Project\licenses.licx(2): error LC0004: Exception occurred creating type ‚DevExpress*‘ System.TypeInitializationException: Der Typeninitialisierer für "DevExpress.*" hat eine Ausnahme verursacht. —> System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. —> System.IO.FileNotFoundException: Die Datei oder Assembly "EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden. [*proj]

DevExpress* bedeutet, dass es sich um ein beliebiges Control handeln kann, welches in einem Projekt verwendet wird. Ein Fehler dieser Art kann theoretisch mit jedem beliebigen Framework, welches mit Lizenzen hantiert, auftreten. Bei DevExpress selbst habe ich einige Einträge dazu gefunden:

Es gibt im Netz dazu schon einige Einträge, unter anderem habe ich dazu einen recht aktuellen vom 25.10.11 gefunden, in welchem empfohlen wird, dass man diese Dateien aus dem Repository ausschließt. Weitere Links findet ihr am Ende.

Bei uns hat allerdings nur eine Lösung Wirkung gezeigt: Wir haben bei allen Entwicklern und auf allen Buildservern (inkl. aller Agents!) DevExpress entfernt und überall neu installiert. Da es in der Zwischenzeit ein Update gab, mussten wir mit dem DevExpress ProjectConverter alle Projekte aktualisieren lassen. Danach ging wieder alles. Ob die Neuinstallation schon ausgereicht hätte weiß ich nicht, da wir wie gesagt auch noch eine Konvertierung durchgeführt haben.

Restliche Quellen:

%d Bloggern gefällt das: