Gwarantowany sposób na znalezienie ścieżki do plików ildasm.exe i ilasm.exe niezależnie od wersji / środowiska .NET?

Czy istnieje sposób na programowe pobranie plików FileInfo / Path of ildasm.exe / ilasm.exe? Próbuję dekompilować i ponownie skompilować plik dll / exe odpowiednio po dokonaniu zmian (domyślam się, że PostSharp robi coś podobnego do zmiany IL po kompilacji).

Znalazłem wpis na blogu, który wskazywał na:

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

...

Jednak po uruchomieniu tego kodu katalog nie istniał (głównie dlatego, że moja wersja SDK to 7.1), więc na moim komputerze lokalnym poprawna ścieżka to@"Microsoft SDKs\Windows\v7.1\bin". Jak mogę się upewnić, że rzeczywiście mogę znaleźć plik ildasm.exe?

Podobnie znalazłem inny wpis na blogu, jak uzyskać dostęp do ilasm.exe jako:

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

...

Chociaż to działa, zauważyłem, że mam Framework i Framework64, aw samym Framework mam wszystkie wersje do v4.0.30319 (tak samo jak w Framework64). Więc skąd mam wiedzieć, którego użyć? Czy powinien być oparty na wersji .NET Framework, na którą celuję?

Streszczenie:

Jak właściwie zagwarantować znalezienie właściwej ścieżki do ildasm.exe?Jak właściwie wybrać poprawny plik ilasm.exe do kompilacji?

questionAnswers(2)

yourAnswerToTheQuestion