Как проверить код совместим с Windows 7 - PullRequest
0 голосов
/ 21 апреля 2010

Мы разрабатываем с использованием Visual C # 2008 Express программу на основе WPF под Windows XP (32 бита).

Дело в том, что мы пытались запустить программу на двух компьютерах с Windows 7, одна из них 32-битная Windows 7, а другая 64-битная Windows 7.

Под Windows XP все нормально. В Windows 7 машина запускается в 32-битной версии, хотя при запуске одной из функций возникает ошибка (в XP этого не происходит).

В W7 64 бита он даже не запускается. Это нормально? Нельзя запускать 32-битные программы под 64-битным W7, даже если они выполняются медленнее ??

Как мы можем проверить, совместим ли код с Windows 7?

Большое спасибо заранее.

Julen.

Ответы [ 5 ]

4 голосов
/ 21 апреля 2010

Хорошо, поскольку пользователь предоставил дополнительную информацию, я считаю, что виновник был найден. Клиент использует базу данных MS Access в своем приложении (стандартный MS Jet провайдер). Проблема в том, что у Microsoft нет 64-битной версии поставщика MS Jet , и НЕ БУДЕТ . Не знаю почему :) 1007 *

Таким образом, чтобы приложение работало на 64-битной Windows 7, сделайте следующее: в Visual Studio перейдите к свойствам проекта и на вкладке «Сборка» измените целевой объект платформы Any CPU на x86 Это заставит приложение быть скомпилированным в 32-битном режиме (будет работать под WOW64 на Win7 64), и приложение сможет получить доступ к базе данных Access. Я считаю, что именно поэтому он не работал на 64-битной ОС:)

Что касается «при выполнении одной функции есть ошибка», я рекомендую получить более подробную информацию об ошибке и создать новый вопрос с ней.

Удачи, и удачи!

2 голосов
/ 21 апреля 2010

Я согласен с Artiom и вижу только один действительный ответ: протестируйте его на Windows 7. Мы могли бы записать список возможных проблем здесь (и я сделаю это через секунду), но вам все равно нужно

  • Проверьте ваше программное обеспечение на соответствующей архитектуре
  • Проверьте сообщения об ошибках / условия самостоятельно

Возможные изменения между XP и Windows 7:

Контроль доступа пользователей (UAC): Это означает, что ваша программа не запускается с правами администратора, если вы не

  • явно запустить его так
  • требовать административные права в конкретном ресурсе манифеста, который поддерживается в Vista / Windows7

Это также означает, что ваше приложение не может выполнять запись в некоторые папки (UAC пытается «помочь» вам с «Перенаправление виртуальной папки»: если вы записываете в% ProgramFiles%, оно автоматически записывает в ваш профиль пользователя и «успешно». пользователь ожидает увидеть ваше изменение в директории% ProgramFiles%, хотя его там не будет), даже не получив сообщение об ошибке.

Относительно ваших конкретных отчетов и проблем:

1) Дайте более подробную информацию об этой функции. Возможно, это зависит от DLL, которой нет в Windows7 (но она была на каждой машине с XP). Может быть, это просто связано с разрешениями (см. Выше). Подробнее -> Дополнительная помощь.

2) Опять подробнее. Возможный кандидат: Ваше приложение работает как 64-битное приложение, хотя оно имеет жесткие / ранние зависимости от 32-битных собственных DLL через P / Invoke. Опять же, вы предоставляете недостаточно информации.

1 голос
/ 21 апреля 2010

Я думаю, что это не вопрос совместимости. Windows 7, как 32-битная, так и 64-битная, должны быть полностью совместимы с приложениями C # WPF. И он не будет работать заметно медленнее на 64-битной ОС .. Вы не должны заметить какого-либо ухудшения.

Если ваше приложение рушится на Win7, проверьте ваш код, проверьте исключения, которые оно выдает ... Я почти уверен, что виновник есть.

0 голосов
/ 21 апреля 2010

В дополнение к предыдущим сообщениям: чтобы помочь вам найти проблемы с вашим приложением, есть Application Compatibility Toolkit .

0 голосов
/ 21 апреля 2010

У меня было то же самое, когда я разрабатывал свой хобби-проект в 32-битной Win XP и пытался запустить его в 64-битной Vista. Приложение даже не запускалось и иногда выдавало ошибку, хотя целевой процессор был установлен как «Любой процессор».

Теперь я разрабатываю компьютер с 64-битной версией Win 7 и устанавливаю целевой процессор как «Любой процессор». Он работал без проблем в Vista и XP (как 32-разрядных, так и 64-разрядных).

Вы также можете переключить только 32-битный режим. Ваше приложение не будет иметь проблем с производительностью.

Я бы предложил вам открыть приложение на ПК с Windows 7, а затем отладить или перекомпилировать и протестировать его в более низких версиях, таких как Vista и XP.

...