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?