Программа.NET 4, написанная / скомпилированная на компьютере с Windows 7, не будет работать на XP

У меня есть приложение, которое я написал с использованием C# .NET 4.0 в Visual Studio 2010 на моем компьютере с Windows 7 Ultimate. Это приложение отлично работает как на Windows Vista, так и на других компьютерах с Windows 7, но всякий раз, когда кто-то работает под управлением Windows XP, пытается его запустить, происходит сбой.

Чтобы воспроизвести это, я попытался запустить его на своей машине с Win XP VMWare, и он там вылетает. К сожалению, это не дает мне никакой конкретной ошибки, просто сообщает мне, что программа потерпела крах и должна закрыться.

Еще один пользователь прислал мне следующее:

Run-time error '339'
Component 'vbalSGrid6.ocx' or one of its dependencies not correctly registered: a file is  missing or invalid.

Code 0xe0434352
Flags 0x00000001

Я не получаю этого конкретного кусочка, когда пытаюсь запустить его на своей машине с Virtual XP, и я также удостоверился, что установил там.NET 4.0.

Что может быть причиной этого, и почему приложение не будет работать в XP, если для XP поддерживается платформа.NET 4?

Компоненты, используемые в программе: DataGridView, ComboBox, Buttons, Labels, LinkLabel, JSON-анализатор NewtonSoft, и на этом все.

Я сбит с толку и совершенно не знаю, с чего начать. Идеи?

ОБНОВЛЕНИЕ: Хм, попытался запустить мое другое недавно созданное приложение на XP, и оно загрузилось нормально. Единственное существенное различие (в любом случае в компонентах, которые я использовал) между ними заключается в том, что я использую библиотеку JSON от NewtonSoft, которую я на самом деле считаю компонентом.NET 3.5.

ОБНОВЛЕНИЕ 2: Просто ради удовольствия я попытался запустить программу на своем компьютере с Wind7 в режиме совместимости с Windows XP SP3, и она работала нормально. Конечно, я понятия не имею, насколько близко "режим совместимости" эмулирует настоящую среду XP SP3, но я решил, что все равно предоставлю вам информацию.

3 ответа

Решение

¡¡ЭТО БЫЛО ЗНАЧОК ПРИМЕНЕНИЯ!!

Я продолжал замечать, что модуль, на который он ссылался в сообщенной мне ошибке, был system.drawing который я думал странным Я подумал, что, возможно, проблема была в том, что я использовал PictureBox, поэтому я попытался отключить все, что с этим связано, но безрезультатно.

Мой партнер по бизнесу настроил его XP, чтобы у нас была другая машина для тестирования, кроме моего VMWare XP, на случай, если с ним возникнут какие-то странные проблемы.

После того, как он настроил его и скопировал приложение, он сказал: "Иконки выглядят как DOS", и у меня был момент эврики.

Я использовал.PNG в качестве значков, потому что они поддерживают прозрачность и еще много чего, но XP изначально не поддерживает их. Поэтому, когда приложение было скопировано на рабочий стол, оно просто использовало для него общий значок, а при запуске приложения оно зависало, потому что XP не знает, как отобразить.PNG.

Попробуйте использовать Fusion Log Viewer для устранения ошибок запуска в приложениях.NET.

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

Мы уверены, что это какая-то странная проблема с совместимостью.NET или просто проблема плохой программы установки / развертывания?

Вот один пользователь, у которого есть это сообщение об ошибке, потому что DLL OCX была скопирована в System32 с коротким именем. Переименование DLL на правильное имя и запуск RegSvr32 решили его проблему.

У вас есть установщик? Правильно ли вы определили все ваши управляемые и неуправляемые зависимости и правильно создали их в своем установщике?

http://forums.elmsoftware.com/forum_posts.asp?TID=119

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