(Во многом это повторяет то, что уже было написано выше.)
Мне нужно запустить VS2003 в качестве администратора под 64-разрядной версией Win7, чтобы поддерживать устаревшие проекты (например, те, которые работают на исходной Xbox). Для старого XDK требуется VS2003, поэтому обновление невозможно. Я мог бы запустить WinXP, но предпочитаю Win7.
VS2003 официально не поддерживается в Win7, и попытка сделать это создает пару довольно неприятных проблем:
Поиск в файлах вызывает зависание VS2003. Связывание не удается из-за утечки дескриптора файла PDB. Зависание Find-in-files решается с помощью «Отключить визуальные темы». Перейдите к ярлыку VS2003 (Пуск -> Microsoft Visual Studio .NET 2003), щелкните правой кнопкой мыши, чтобы открыть контекстное меню, выберите вкладку «Совместимость», панель «Параметры» и установите флажок «Отключить визуальные темы».
Ошибка компоновщика (LNK1201) происходит, когда вы запускаете программу через отладчик, останавливаете ее, изменяете файл и строите. Ошибка заключается в том, что Visual Studio хранит дескриптор файла PDB, в то время как компоновщик пытается записать в этот файл. Вы можете остановить и перезапустить VS2003, чтобы обойти проблему. Работает, но раздражает.
Вы также можете использовать служебную программу «handle.exe» Microsoft SysInternals, чтобы найти, а затем закрыть дескрипторы, удерживаемые процессом в конкретном файле. Напишите сценарий для вызова handle.exe и настройте проект VS2003 для запуска этого сценария в качестве события перед сборкой. (См. эту ветку. ) Но handle.exe требует запуска от имени администратора.
Вы можете гипотетически изменить handle.exe для запуска от имени администратора, используя обычные шаги (например, в качестве настройки совместимости), но тогда handle.exe (по-видимому) запускается во вложенной оболочке, и тогда текст stdout не попадает в вызывающий скрипт.
Вы можете запустить VS2003 от имени администратора, и в этом случае сценарий предварительной сборки также запускается от имени администратора, следовательно, и handle.exe, и это работает.
Остающийся трюк - заставить файлы VS2003 SLN открываться должным образом. Если вы просто заставите VS2003 запускаться от имени администратора автоматически, то селектор версии VS не сможет запустить VS2003. Не знаю почему, но это так.
Вы можете связать файлы SLN для открытия с помощью VS2003 devenv.exe вместо VSLauncher.exe. Это работает, но все новые файлы SLN (2005, 2008, 2010, 2012, ...) не открываются.
Итак, последний шаг - запустить VSLauncher.exe от имени администратора. Это не работает с KB2492386, поскольку это поток указывает. Удаление этого обновления было последним шагом в этой саге, чтобы все заработало.
person
Michael J. Gourlay
schedule
21.12.2012
en_vs.net_2003_prereq.iso
,en_vs.net_2003_pro_cd1.iso
иen_vs.net_2003_pro_cd2.iso
- я не уверен, что если бы я запустилmu_vsnet2003sp1.exe
потом, не помешало бы просто запустить его потом и проверить, можно ли его применить. - person Ray   schedule 02.07.2019