SDanielCM Ответов: 1

Как сделать visual studio .exe win98 совместимым?


Я построил крошечный калькулятор для рабочего приложения. Наши управляющие ПК жестко закреплены в Windows98. Калькулятор принимает 3 числовых входа, выполняет некоторую легкую арифметику и выводит либо числовой ответ, либо два текстовых ответа, если выход находится ниже нижнего предела или выше верхнего предела определенного диапазона. Очень просто.

Я написал это на окошке XP 7 машина под управлением Visual Studio 2017. Я обычно использую Excel VBA, поэтому я совсем новичок в VS. Когда я пытаюсь выполнить программу, она говорит, что приложение ожидает более новую версию windows. Я перешел к файлу .exe в проводнике и безрезультатно настроил совместимость с Win98. Есть ли что-нибудь еще, что я могу попытаться сделать его совместимым?

Что я уже пробовал:

Обозреватель&ГТ;программы.EXE-файл>Свойства&ГТ;совместимость&ГТ;

--"Запустите эту программу в режиме совместимости для Windows 98"
--"Использовать 256 цветов"
--"Отключить визуальные темы"

По предложению Дэйва К.
--Я изменил приложение на target .NET 2.0

Richard Deeming

Visual Studio 2017 требует как минимум .NET Framework 4.6.1 и Windows 7 SP1.

Последнее слово .Чистая версия, которая может быть установлена на XP, - это 4.0; она не будет устанавливать VS2017.

Итак, как же вам удалось написать приложение на Windows XP с помощью VS2017?

SDanielCM

Я прошу прощения, вы правы, я под управлением Windows 7. Хороший улов! Я соответствующим образом обновил этот вопрос.

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Последней версией .NET Framework, поддерживаемой в Windows 98, была версия 2.0 без пакета обновления. .NET 2.0 SP1 и выше не работают в Windows 98.

Кроме того, ваш проект должен быть нацелен на .NET 2.0. Если вы написали приложение для новой версии фреймворка, вам придется перейти в свойства проекта, вкладку приложение и изменить целевой фреймворк на ".NET Framework 2.0".

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

Далее, на машинах, на которых вы устанавливаете свое приложение, должен быть установлен распространяемый пакет .NET Framework 2.0, иначе ваше приложение не запустится.


SDanielCM

Дэйв, спасибо за быстрый ответ. Я изменил приложение на target .NET 2.0, как вы советовали, и теперь я получаю ошибку "A required .DDL file, MCSOREE.DLL, не был найден." Это связано с тем, что вы сказали?

Next, the machines you install your app on MUST have the .NET Framework 2.0 Redistributable installed otherwise your app will not launch.

Если это так, то как бы вы посоветовали решить этот вопрос? И снова я ценю ваше терпение с таким новым пользователем, как я.

Dave Kreskowiak

Вам придется загрузить Redis из другого источника, кроме Microsoft. Самая старая версия .NET, которую они имеют в открытом доступе, - это .NET 3.5, которая не будет работать на Win98.

Вы можете посмотреть на этот список[^] и попробуйте получить его из CNET или TechSpot.

SDanielCM

Мне придется пробежаться по этому делу с нашим ИТ-специалистом, прежде чем я смогу попытаться. Наше производственное оборудование работает в автономной сети, и я не хочу портить какое-либо оборудование, пытаясь восстановить операционную систему. Там также может быть какая-то причина .DLL была удалена намеренно.

Dave Kreskowiak

Это говорит о том, что "mscoree.dll" не существует, потому что платформа .NET Framework не установлена на машине.

При компиляции проекта код компилируется до уровня Microsoft Intermediate Language (MSIL). Это процессор-агностический "машинный код", который не будет работать ни на одном реальном процессоре.

Очень упрощенная версия того, что находится в этом EXE-файле, который создается, такова: это обычный исполняемый файл, называемый "заглушкой", и ваш код MSIL объединен вместе. "Заглушка" - это фрагмент кода, который загружает среду CLR .NET Framework Common Language Runtime (CLR) из mscoree.dll и передает ему указатель на ваш MSIL "код". Затем CLR начинает анализировать MSIL, извлекая то, что ему нужно для выполнения вашего кода, и вызывает то, что называется компилятором Just-In-Time, чтобы перевести код MSIL в собственные инструкции процессора, которые может выполнить ваш процессор.

SDanielCM

В настоящее время мы запускаем программное обеспечение автоматизации с домашним интерфейсом VB; разве не обязательно уже должна быть какая-то версия .NET Framework для выполнения этих команд?

Dave Kreskowiak

Более старый VB-это не то же самое, что VB.NET-да. VB6 и ниже не были основаны на .NET Framework. VS2017 не может писать или компилировать старомодный VB-код.

SDanielCM

Ладно, спасибо за разъяснение.