Meine erste Bibliothek im .NET-Standard-Library-Format

.NET Standard Library

Wow, die Namensbezeichnung im .NET-Core-Umfeld ist mal richtig verwirrend.

Ich bin jetzt ganz stolz, dass ich es geschafft habe, meine Bibliothek Zeta Long Paths nun auch als .NET Standard Library zu kompilieren und als NuGet-Paket zu veröffentlichen:

ZetaLongPaths.NetStandard

Ich habe immer noch nicht ganz verstanden, was ich da genau alles gemacht habe. Viel gegoogelt und viel ausprobiert, viel auf Stack Overflow und GitHub nachgelesen.

Aus meiner Sicht ist das alles die Zukunft, auch wenn grad erst vieles frisch aus dem Beta-Stadium kommt und noch im großen Wandel begriffen ist.

Werbehinweis:

Ggf. wollt Ihr auch mal auf meinem noch etwas einsamen Entwickler-Forum Entwicklergate vorbei schauen und eventuell sogar mit diskutieren!

„Es wurde versucht, eine Datei mit einem falschen Format zu laden“

Wenn Ihr in einem .NET-Programm diese Fehlermeldung bekommt:

Es wurde versucht, eine Datei mit einem falschen Format zu laden.

Auf englisch:

BadImageFormatException – Could not load file or assembly … An attempt was made to load a program with an incorrect format

Dann liegt das ziemlich sicher daran, dass Ihr ein 64-Bit-Anwendung habt und darin versucht eine 32-Bit-Assembly (DLL) zu laden.

Die Lösung ist dann oft, dass Ihr Eure Anwendung explizit als 32-Bit kompiliert.

Fehlermeldung „Die Datei oder Assembly oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.“ lösen

Letztens hatte ich folgende Fehlermeldung:

Die Datei oder Assembly „ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73“ oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

Trotz Suchen mit CheckAsm und dem Aktivieren von Fusion-Logging konnte ich keine fehlende DLL finden.

Die Ursache war dann, dass ich die DLL aus dem Internet downgeloadet hatte und Windows diese irgendwie „schützt“ (schöner Euphemismus).

Als Lösung dann ganz einfach Rechtsklick auf die Datei und die Schaltfläche „Zulassen“ anklicken.

Die Datei oder Assembly oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

Danach lief alles wie gewünscht.

error MSB6006: „sgen.exe“ exited with code 1

Wenn bei mir die folgende Fehlermeldung beim Kompilieren einer WinForms-Anwendung mit DevExpress-Steuerelementen auftrat:

error MSB6006: „sgen.exe“ exited with code 1

Dann war die Ursache, dass ich nachgelagerte, eigene, Assemblies verwendet hatte, die auch DevExpress benutzen, jedoch nach einem DevExpress-Update noch nicht neu kompiliert wurden.

In anderen Worte, die nachgelagerten Assemblies haben eine ältere (u.U. nicht mehr vorhandene) DevExpress-Version verwendet als mein Hauptprogramm.

Die Lösung war dann schlicht, dass ich die nachgelagerten Assemblies neu kompiliert hatte, so dass diese nach dem DevExpress-Update auch an die neuesten DevExpress-Versionen gebunden waren.