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.

Ankommende Suchanfragen:

  • c# badimageformatexception Es wurde versucht eine Datei mit einem falschen Format zu laden
  • Culture=neutral PublicKeyToken=null oder eine Abhängigkeit davon wurde nicht gefunden Es wurde versucht eine Datei mit einem falschen Format zu laden
  • es wurde versucht eine datei mit einem falschen format zu laden
  • https://yandex ru/clck/jsredir?from=yandex ru;search;web;;&text=&etext=1829 Fph4mat-_s4Ky2cVo4dCdBb2GZhE5DhjxGDX_g2yw-wV4fL1H7h7O3uTB7U_8i4Q ed60547ded225efbc1f9d99d1f810b5527bec92e&uuid=&state=_BLhILn4SxNIvvL0W45KSic66uCIg23qh8iRG98qeIXme
  • Visual Studion Installer Es wurde versucht eine Datei mit einem falschen Format zu laden

InvalidOperationException – Das Objekt wird bereits an anderer Stelle verwendet

Zur Fehlermeldung

InvalidOperationException – Das Objekt wird bereits an anderer Stelle verwendet

im Umgang mit Bitmap-Objekten in GDI+ habe ich in meinem neuen, kleinen Entwickler-Forum ein Posting geschrieben.

Ankommende Suchanfragen:

  • c# bitmap wird bereits verwendet
  • system invalidoperationexception: das objekt wird bereits an anderer stelle verwendet
  • unbehandelte ausnahme das objekt wird bereits an anderer stelle verwendet

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.

Ankommende Suchanfragen:

  • datei oder assembly beheben
  • das system kann das assembly nicht finden
  • datei assembly oder abhänigkeit davon nicht gefunden
  • dll assembly finden
  • dsmblibwrapper

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.

Ankommende Suchanfragen:

  • https://yandex ru/clck/jsredir?from=yandex ru;search;web;;&text=&etext=1827 UpUnFDVEKOsSmjVPEptp3pquhyx9vI2d657GsMDeNBvxGceegzUV5eSt1eNWT4Gp 5bda890322da35641ab06ee030045b24a00ede2a&uuid=&state=_BLhILn4SxNIvvL0W45KSic66uCIg23qh8iRG98qeIXme
  • sgen exe Code 1
  • sgn exe code 1

Ausnahme DeletedRowInaccessibleException beim Zugriff auf DataRow-Spalte

In einem kleinen, unverfänglichen Codestück habe ich so etwas wie das hier:

In manchen Fällen hat die zweite Zeile dann eine Fehlermeldung DeletedRowInaccessibleException ausgelöst:

Auf gelöschte Zeileninformationen kann nicht über die Zeile zugegriffen werden.

Nach etwas Recherche habe ich dann dieses Posting gefunden und damit (in meinem Fall) auch die Lösung:

D.h. ich habe auf die Original-Zeile zugegriffen, nicht auf eine potentiell schon gelöschte. Das klappt logisch nicht in jedem Fall, bei mir war’s zum Glück ausreichend.

 

Bubble Mouse Move events from child controls up the hierarchy in Windows Forms

Windows Forms (or „WinForms“ for short) does not know the concept of event bubbling (also called „event propagation“ sometimes). To solve this in terms of command routing, I’ve written some small classes earlier.

To bubble up events from child controls to parent controls (or the form itself), the idea is to hook into the child control creation and hook up for those specific events and manually forward them.

Based on this idea and with the help of a forum answer on MSDN, I’ve written a small class that you can attach to a control and get all child control MouseMove events. The class looks like:

I’ve also saved it as a PasteBin.

The class can be adjusted to match other events than the MouseMove event, if required.

Ankommende Suchanfragen:

  • https://blog magerquark de/bubble-mouse-move-events-from-child-controls-up-the-hierarchy-in-windows-forms/

Fehlermeldung „System.MethodAccessException“ bei .NET-4-Programmen beheben

Habe vorhin ein .NET-2-Programm (Windows Forms) nach .NET 4.5 geändert (also in der Projektkonfiguration in Visual Studio .NET 2012 das Ziel-Framework geändert.

Bei diesem Aufruf hat es dann gekracht:

Dort kam dann eine Fehlermeldung:

System.MethodAccessException was unhandled HResult=-2146233072 Message=Fehler beim Versuch der SecurityTransparent-Methode „ZetaHelpdesk.Main.Code.AppHost.Host.Main()“, auf die sicherheitskritische Methode „System.AppDomain.add_UnhandledException(System.UnhandledExceptionEventHandler)“ zuzugreifen.

Die Assembly „zeta-helpdesk, Version=2.1.0.1, Culture=neutral, PublicKeyToken=1dbe5f735b90e083“ ist mit „AllowPartiallyTrustedCallersAttribute“ markiert und verwendet das Sicherheitstransparenzmodell der Stufe 2. Bei Festlegung der Transparenz auf Stufe 2 werden alle Methoden in AllowPartiallyTrustedCallers-Assemblys standardmäßig sicherheitstransparent, was die Ursache der Ausnahme sein kann.

Source=zeta-helpdesk

StackTrace: bei ZetaHelpdesk.Main.Code.AppHost.Host.Main() in c:\P\Zeta Helpdesk\Source\Core\Main\Code\AppHost\Host.cs:Zeile 100. bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() bei System.Threading.ThreadHelper.ThreadStart_Context(Object state) bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) bei System.Threading.ThreadHelper.ThreadStart() InnerException:

Wer die Fehlermeldung aufmerksam liest, findet auch schon die Ursache. Da steht nämlich, dass ein Assembly-Attribut hier unpassend ist. Und tatsächlich habe ich folgendes in der Datei „AssemblyInfo.cs“ stehen:

Ich hatte seinerzeit aus diesem Grund das Attribut eingefügt.

Als ich das Attribut dann entfernt habe, lief alles wie gewünscht. Neu kompilieren natürlich auch noch 😉

Ankommende Suchanfragen:

  • Fehler beim Versuch der SecurityTransparent-Methode System Web Http GlobalConfiguration get_Configuration() auf den sicherheitskritischen Typ System Web Http HttpConfiguration zuzugreifen

CryptographicException bei Verwendung von Oracle.ManagedDataAccess lösen

Gestern hatte ein Kollege beim Aufsetzen einer Website ASP.NET MVC 4 auf einem IIS unter Windows Server 2008 R2 eine Fehlermeldung:

Zunächst war es eine Herausforderung, statt den „normalen“ Oracle.DataAccess-Klassen die Oracle.ManagedDataAccess-Klassen zum Laufen zu bringen. Hier haben uns zwei Artikel geholfen:

Wir haben dann zum Lösen des eigentlichen Fehlers lange rumgesucht, viel ausprobiert und schließlich beim Weblog-Artikel „SOLVED: Windows Identity Foundation – “The system cannot find the file specified”“ fündig geworden.

Die Lösung bestand dann schlicht darin, im Anwendungspool (App Pool) für die Anwendung die Option „Benutzerprofil laden“ auf „True“ zu stellen:

IIS App Pool - Benutzerprofil laden

Danach lief alles wie gewünscht.