Я пытаюсь получить информацию о версии из xiixtasks.exe.
Когда я пытаюсь выполнить "Process.GetCurrentProcess()", он дает мне имя файла и информацию о версии vshost.exe, а НЕ xiixtasks.exe:
Код: Выделить всё
// WRONG: this gives me xiixtasks.vhost.exe, version 9.0.30729.1
// I *want* "xiixtasks.exe", version 1.0.0.1024
System.Diagnostics.FileVersionInfo fi =
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileVersionInfo;
Решение:
- Первоначальной проблемой действительно была оболочка IDE «vshost».
Одним из обходных путей было бы изменение настроек сборки. - Assembly.GetExecutingAssembly().CodeBase — отличное решение — спасибо! Он работает внутри и вне отладчика.
- К сожалению, когда я попытался вызвать его с помощью функции, которая ожидала нормальный путь к файлу (вместо URI, такого как GetExecutingAssembly()), он умер с исключением «Форматы Uri не поддерживаются».
- Окончательное решение: вызовите GetExecutingAssembly(), затем Uri.LocalPath():
Код: Выделить всё
... else if (cmdArgs.cmd.Equals(CmdOptions.CMD_SHOW_VERSION)) { string codeBaseUri = Urifile.System.Reflection.Assembly.GetExecutingAssembly().CodeBase; string codeBase = new Uri (codeBaseUri).LocalPath; string sVersion = Util.GetWindowsVersion(codeBase); System.Console.WriteLine ("version({0}): {1}: ", Util.Basename(codeBase), sVersion); }
Подробнее здесь: https://stackoverflow.com/questions/788 ... pplication