Гарантированный способ найти путь к файлу ildasm.exe и ilasm.exe независимо от версии / среды .NET?

Есть ли способ программно получить FileInfo / Path исполняемых файлов ildasm.exe / ilasm.exe? Я пытаюсь декомпилировать и перекомпилировать файл dll / exe соответствующим образом после внесения в него некоторых изменений (я предполагаю, что PostSharp делает что-то похожее, чтобы изменить IL после компиляции).

Я нашел сообщение в блоге, которое указало на:

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

...

Однако, когда я запустил этот код, каталог не существовал (в основном потому, что моя версия SDK - 7.1), поэтому на моей локальной машине правильный путь@"Microsoft SDKs\Windows\v7.1\bin", Как мне убедиться, что я действительно могу найти ildasm.exe?

Точно так же я нашел другой пост в блоге о том, как получить доступ к ilasm.exe как:

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

...

Хотя это работает, я заметил, что у меня есть Framework и Framework64, и внутри самой Framework у меня есть все версии до v4.0.30319 (то же самое с Framework64). Итак, как мне узнать, какой использовать? Должно ли оно быть основано на версии .NET Framework, на которую я нацеливаюсь?

Резюме:

Как правильно гарантировать, чтобы найти правильный путь к ildasm.exe?Как правильно выбрать правильный ilasm.exe для компиляции?

Ответы на вопрос(2)

Ваш ответ на вопрос