Garantierte Möglichkeit, den Dateipfad der Dateien ildasm.exe und ilasm.exe unabhängig von der .NET-Version / -Umgebung zu finden?

Gibt es eine Möglichkeit, programmgesteuert die FileInfo / Path der ausführbaren Dateien ildasm.exe / ilasm.exe abzurufen? Ich versuche, eine DLL / Exe-Datei zu dekompilieren und neu zu kompilieren, nachdem ich einige Änderungen daran vorgenommen habe (ich vermute, dass PostSharp etwas Ähnliches tut, um die IL nach der Kompilierung zu ändern).

Ich habe einen Blog-Beitrag gefunden, der auf Folgendes hinweist:

var pfDir = Environment.GetFolderPath(Environment.SpecialFolders.ProgramFiles));
var sdkDir = Path.Combine(pfDir, @"Microsoft SDKs\Windows\v6.0A\bin");

...

Als ich diesen Code ausführte, existierte das Verzeichnis jedoch nicht (hauptsächlich, weil meine SDK-Version 7.1 ist), sodass auf meinem lokalen Computer der richtige Pfad angegeben ist@"Microsoft SDKs\Windows\v7.1\bin". Wie stelle ich sicher, dass ich die Datei ildasm.exe finde?

In ähnlicher Weise habe ich einen anderen Blog-Beitrag gefunden, in dem beschrieben wird, wie Sie auf ilasm.exe zugreifen können:

string windows = Environment.GetFolderPath(Environment.SpecialFolder.System);
string fwork = Path.Combine(windows, @"..\Microsoft.NET\Framework\v2.0.50727");

...

Während dies funktioniert, habe ich festgestellt, dass ich Framework und Framework64 habe, und innerhalb von Framework selbst habe ich alle Versionen bis zu v4.0.30319 (dasselbe mit Framework64). Woher weiß ich, welche ich verwenden soll? Sollte es auf der .NET Framework-Version basieren, auf die ich ziele?

Zusammenfassung:

Wie kann ich angemessen garantieren, dass der richtige Pfad zu ildasm.exe gefunden wird?Wie wähle ich die richtige ilasm.exe zum Kompilieren aus?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage