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

У меня есть приложение, которое я написал с использованием C # .NET 4.0 в Visual Studio 2010 на моей машине с Windows 7 Ultimate.Это приложение отлично работает как на 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, если платформа .NET 4 поддерживается для XP?

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

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

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

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

Ответы [ 3 ]

8 голосов
/ 20 февраля 2011

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

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

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

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

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

2 голосов
/ 20 февраля 2011

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

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

1 голос
/ 20 февраля 2011

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

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

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

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

...