.NET – Debugging optimized managed code / Disable JIT Optimization

Builds von managed Code, speziell Release Builds, werden schon zur Compile-Zeit geringfühig optimiert. Intern des Binaries wird zusätzlich ein Flag gesetzt, um die (Just-In-Time) Optimierung zur Laufzeit zu aktivieren. Demzufolge wird der Code unmittelbar vor Ausführung optimiert (geJITed).

Um so einen Code sinnvoll zu debuggen, benötigt man lediglich ein INI file, um die JIT Optimierung abzuschalten.

Schritte:

  1. Anwendungen schließen, welche den optimierten Code benutzen.
  2. Ein neues Textfile erstellen, welches den gleichen Namen besitzt, aber die neue Extension .ini (Bsp.: MyBinaryCode.dll -> MyBinaryCode.ini).
  3. Mit folgenden Inhalt füllen:

    [.NET Framework Debugging Control]
    GenerateTrackingInfo=1
    AllowOptimize=0

  4. Parallel zum binary (exe/dll) legen.
  5. Nicht optimierten Code debuggen.

Weitere Informationen findest Du bei MSDN.

Anwendung fordert selbst Admin-Rechte an – Win7 .NET C#

Eine selbst geschriebene Anwendung braucht unbedingt Admin-Rechte um zu funktionieren? Da der „Umweg“ über das Contextmenü „Als Administartor ausführen“ immer etwas mühselig ist und ein anderer User dies nicht unbedingt weiß, ist es sinnvoll das die Anwendung gleich von selbst die Rechte beim Benutzer anfordert. Dies geschieht am einfachsten über das Application Manifest File, welches der Solution hinzugefügt werden muß. Unter Projekteigenschaften den Reiter Application auswählen und unter „Icon and Manifest“ das soeben neu erstellte Manifest File auswählen.

Zum Schluß muß dieses File noch angepasst werden und zwar muß folgende Zeile

„<requestedExecutionLevel level=“asInvoker“ uiAccess=“false“ />“

nach

„<requestedExecutionLevel level=“requireAdministrator“ uiAccess=“false“ />“

geändert werden.

Weitere Möglichkeiten sind in diesen File als Kommentar standardmäßig aufgelistet. Jetzt sollte die Anwendung, nach erfolgreichen übersstzen, beim Ausführen den User nach Administratorenrechte fragen (gestestet mit Win7).