¿Una forma garantizada de encontrar la ruta de archivo de los archivos ildasm.exe e ilasm.exe independientemente de la versión .NET / del entorno?

¿Hay alguna forma de obtener mediante programación la información de archivo / ruta de los ejecutables ildasm.exe / ilasm.exe? Estoy intentando descompilar y recompilar un archivo dll / exe adecuadamente después de realizar algunas modificaciones (supongo que PostSharp hace algo similar para alterar el IL después de la compilación).

Encontré una publicación de blog que apuntaba a:

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

...

Sin embargo, cuando ejecuté este código, el directorio no existía (principalmente porque la versión de mi SDK es 7.1), así que en mi máquina local la ruta correcta es@"Microsoft SDKs\Windows\v7.1\bin". ¿Cómo me aseguro de que realmente puedo encontrar el ildasm.exe?

Del mismo modo, encontré otra publicación de blog sobre cómo obtener acceso a ilasm.exe como:

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

...

Mientras esto funciona, noté que tengo Framework y Framework64, y dentro de Framework tengo todas las versiones hasta v4.0.30319 (igual que en Framework64). Entonces, ¿cómo puedo saber cuál usar? ¿Debería basarse en la versión de .NET Framework que estoy seleccionando?

Resumen:

¿Cómo garantizo adecuadamente encontrar la ruta correcta a ildasm.exe?¿Cómo selecciono correctamente el ilasm.exe correcto para compilar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta