Microsoft .NET 框架的每个版本都有, e.g.:
- 对 .NET Framework 1.1 的支持于 2005 年 9 月 9 日结束
- 对 .NET Framework 2.0 的支持于 2010 年 12 月 1 日结束
- 对 .NET Framework 3.0 的支持于 2011 年 12 月 7 日结束
I own 2004年的申请 http://www.ptc.com/products/mathcad/mathcad14-whats-new.htm这是用 .NET Framework 1.1 编写的。如果您尝试在现代 Windows 7 64 位计算机上安装 .NET Framework 版本 1.1,您将收到错误消息 - 它无法正常工作。 2006年写的程序已经不能用了;你不妨把它扔掉。
这是否意味着我编写的程序.NET 3.5今天会在未来的某个时候变得无法使用吗?
Microsoft 竭尽全力使用 Windows API 来保持向后兼容性。 18年前编写的程序(针对Win32或Win32s http://en.wikipedia.org/wiki/Win32s) 仍将在今天的 Windows 上运行。 (我知道 - 我拥有一个。它最初在 Windows 3.1 上运行,并且仍然在 Windows 7 64 位上运行。)
A native我今天编写的程序在 18 年后仍然有效(可能)。但我今天编写的 .NET 程序似乎无法保证它能够继续运行。
Microsoft 是否对 .NET Framework 2.0 或更高版本有任何兼容性承诺?我知道.NET框架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}
- progid:
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
如果程序should在安装了 .NET Framework 4 的情况下运行,那么我想我可以责怪应用程序的安装程序。
这很可能就是我问题的答案:
- 虽然不再支持 .NET Framework 1.1,
- .NET Framework 1.1 仍受支持
我只是假设这两种说法不可能同时成立。