Каждая версия .NET каркасов Microsoft имеет ограниченный срок поддержки , например ::1003 *
- поддержка .NET Framework 1.1 закончилась 09.09.2005
- поддержка .NET Framework 2.0 закончилась 01.12.2010
- поддержка .NET Framework 3.0 закончилась 12/07/2011
Мне принадлежит приложение 2004 года , написанное на .NET Framework 1.1. Если вы попытаетесь установить .NET Framework версии 1.1 на современный 64-разрядный компьютер с Windows 7, вы получите ошибку - она просто не будет работать. Программа, написанная в 2006 году, больше не может использоваться; Вы могли бы также выбросить это.
Значит ли это, что программа, которую я пишу в .NET 3.5 сегодня, в какой-то момент в будущем просто станет непригодной для использования?
Microsoft приложила немало усилий, чтобы обеспечить обратную совместимость с Windows API. Программа, написанная 18 лет назад (для Win32 или Win32s ), все еще будет работать на сегодняшней Windows. (Я знаю - у меня есть один. Первоначально он работал на Windows 3.1 и по-прежнему работает на Windows 7 64-бит.)
A нативная программа, которую я пишу сегодня, все еще будет работать через 18 лет (вероятно). Но кажется, что .NET-программа, которую я пишу сегодня, не может быть уверена, что она продолжит функционировать.
Существуют ли какие-либо обязательства Microsoft по совместимости в отношении .NET Framework 2.0 или более поздней версии? Я знаю, что .NET Framework 1 / 1.1 был уродливым пасынком; что .NET Framework 2.0 нарушил совместимость с 1.1; но каждый фреймворк начиная с 2.0 был совместим с 2.0.
Есть ли где-нибудь примечание, что если я напишу управляемое приложение с .NET 2.0 или новее, оно должно продолжать работать в Windows 8, Windows 9, Windows 10 и т. Д .?
Случай ошибки .NET Framework 1.1
Следя за программой с помощью Process Explorer, я обнаружил, что объект .NET пытается и не удается создать:
Это класс:
- clsid:
{60EBA0BC-D6AF-41C2-9584-D48D3DA39999}
- Прогид:
Engine.Factory
Итак, я создал небольшое тестовое приложение, чтобы посмотреть, может ли I создать тот же COM-объект:
const Guid CLSID_EngineFactory = '{60EBA0BC-D6AF-41C2-9584-D48D3DA39999}';
IUnknown unk = CoCreateIntance(CLSID_EngineFactory, null, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IUnknown);
Что мне не подходит. Я нахожу регистрационные данные в реестре:
HKEY_CLASSES_ROOT\Wow6432Node\CLSID
{60EBA0BC-D6AF-41C2-9584-D48D3DA39999}
InprocServer32
(Default) mscoree.dll
Assembly mcengr, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Class Engine.Factory
RuntimeVersion v1.1.4322
ThreadingModel Both
Если программа должна работать с установленной платформой .NET Framework 4, то, я полагаю, я могу винить установщик приложения.
Это очень хорошо может быть ответом на мой вопрос:
- пока .NET Framework 1.1 больше не поддерживается,
- .NET Framework 1.1 все еще поддерживается
Я просто предположил, что оба эти утверждения не могут быть правдой одновременно.