Как исправить ошибки VS2008 и VS2010 на Win7 x64

Хорошо, я сейчас в мире боли.

Мы разрабатывали с VS2008 (VB.NET, в основном WinForms, также ASP.NET и службы Windows) на Win7 x64, с особыми требованиями (от которых мы пока не можем избавиться), для таргетинга на x86 и framework 3.5.

Недавно мы обновились до VS2010 и довольно скоро столкнулись с проблемой несовместимости ResGen.exe. По сути, мы не можем скомпилировать приложение WinForms вообще с VS2010. Ни один из обходных путей, предложенных Microsoft или другими, не сработал ни для меня, ни для другого члена моей команды.

Поэтому мы попытались вернуться к VS2008, используя описанную здесь методику (то есть взломать файл решения), а также создав новое решение VS2008 и добавив в него проекты. Некоторое время это казалось нормальным, но теперь мы обнаруживаем, что при отладке приложения необработанные исключения не попадают в IDE, что делает разработку практически невозможной.

Совершенно новое тестовое приложение, созданное с использованием VS2008 (скомпилированное для x86 и.NET 3.5), не демонстрирует эту ошибку при обнаружении исключений.

На данный момент мне пришлось прибегнуть к разработке на VS2010 на Win7 (32-битной) виртуальной машине внутри основного компьютера, и она работает... но она медленная!

Любые идеи для выхода из этого были бы с благодарностью!

Обновление:

Итак, это не настоящее решение, но как обходной путь, это не полная катастрофа...

Спасибо Ною за его комментарий, который побудил меня изучить различные решения для виртуализации. Я теперь обнаружил (вероятно, последний человек здесь!) VirtualBox. Он не только немного более приятен в использовании, чем VMWare Player и различные воплощения Microsoft/Windows Virtual PC, но также имеет плавный режим, когда приложения, работающие на виртуальной машине, отображаются в виде отдельных окон на хосте. Итак, теперь у меня есть гостевая система x86 под управлением VS2010, компилируемая для x86 и Framework 3.5. Поскольку в гостевой системе нет конфликта x64/x86, проблема Resgen.exe отсутствует, и мой dev envt просто отображается как окно на рабочем столе моего хоста. Это все еще медленнее, чем было бы изначально, но я могу жить с этим сейчас.

Все равно оценит любые реальные решения (или, если это не удастся, исправление от Microsoft!!)

2 ответа

Решение

Ну, я сдался.

Некоторое время VirtualBox был в порядке, но медлительность виртуальной машины раздражала, и необходимость управлять движением между хостом и гостем всегда сводила меня с ума.

Итак, я восстановил всю машину с Windows 7 x86.

Полностью противен очевидному безразличию Microsoft к этой проблеме, но, думаю, я не первый, кто это чувствует.

Вы можете просто сделать Make ResGen.exe 32-битным путем: 1. Cd "%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\Bin" 2. Corflags /32Bit+ /Force ResGen.exe

Сохраните ваш предыдущий resgen.exe перед этим изменением.

После этого изменения вам нужно будет изменить все ваши проекты, чтобы Resgen работал в 32-битном режиме.

  1. Добавление Managed32Bit к PropertyGroup в файле проекта любого проекта, который генерирует ресурсы для.NET 3.5 - поскольку уловка corflags влияет на разрядность ResGen.exe на общесистемном уровне, свойство должно быть установлено также для всех затронутых проектов.

  2. ИЛИ При запуске MSBuild.exe напрямую, передавая его с помощью переключателя глобального свойства: '/p:ResGenToolArchitecture=Managed32Bit'

Решение размещено на http://tune-up-pc.com/blog/?p=10790

Другие вопросы по тегам