Maneira garantida de encontrar o caminho de arquivo dos arquivos ildasm.exe e ilasm.exe, independentemente da versão / ambiente do .NET?

Existe uma maneira de obter programaticamente o FileInfo / Path dos executáveis ​​ildasm.exe / ilasm.exe? Eu estou tentando decompilar e recompilar um arquivo dll / exe adequadamente depois de fazer algumas alterações para ele (eu estou supondo que o PostSharp faz algo semelhante para alterar o IL após a compilação).

Eu encontrei uma postagem no blog que apontava para:

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

...

No entanto, quando executei este código, o diretório não existia (principalmente porque minha versão do SDK é 7.1), portanto, em minha máquina local, o caminho correto é@"Microsoft SDKs\Windows\v7.1\bin". Como posso garantir que posso realmente encontrar o ildasm.exe?

Da mesma forma, encontrei outro post sobre como acessar o ilasm.exe como:

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

...

Enquanto isso funciona, notei que eu tenho Framework e Framework64, e dentro do próprio Framework eu tenho todas as versões até v4.0.30319 (mesmo com Framework64). Então, como eu sei qual usar? Deve ser baseado na versão do .NET Framework que estou segmentando?

Resumo:

Como faço para garantir adequadamente para encontrar o caminho correto para ildasm.exe?Como faço para selecionar adequadamente o ilasm.exe correto para compilar?

questionAnswers(2)

yourAnswerToTheQuestion