2

从 .NET 框架问世的第一天起,就有最低限度的操作系统支持:

  • .NET 1.0 - Windows NT 或更高版本(也支持 Windows 98/ME)
  • .NET 2.0 - Windows 2000 或更高版本(也支持 Windows 98/ME)
  • .NET 3.0 - Windows XP 或更高版本
  • .NET 3.5 - Windows XP 或更高版本

这种最低限度的操作系统支持可以通过仅使用框架来忽略特定于平台的问题。较旧的平台上忽略了较新的功能。例如,ListView 控件中的“平铺视图”样式或 Windows 98/ME 上的窗体透明度。

但是,在 System.Core.dll(.NET 3.5 的一部分)中,有一些类使用新的 Vista API,如果在 XP 机器上使用,则会抛出 PlatformNotSupportedException。例如,看看新的 EventLogReader 类(在 System.Diagnostics.Eventing.Reader 命名空间中)。

微软是否打破了平台支持的传统?

公平地说,.NET 2.0 已经有支持 NTFS 安全特性的类,这些在 Windows 98/ME 上不可用。

4

6 回答 6

3

最低操作系统支持意味着该产品已在特定平台及更高版本上进行了测试。它不保证所有功能(或在像 .Net 这样的开发平台的情况下的类/API)都可以在所有受支持的平台上运行。

XP 中不存在特定于 Vista 的原生 API。.Net 3.5 为这些 API 添加了对托管世界的支持,但它不会尝试为 XP 上不存在的本机 API 提供托管实现。

于 2008-09-30T18:49:15.550 回答
1

我可以用经验告诉你,.NET 从未真正在 Windows 98 或 ME 上运行过。我记得在 2002 年 1.0 版是新版本时,我和一些同事发现,任何比带有一些按钮和死的简单功能的 WinForm 更复杂的东西都不会在 Windows 9x 上运行,尽管微软声称相反。鉴于我们已经使用 XP 一年了,并且我们可以合理地期待 Windows 2000 至少在我们当时处理的机器上,这没什么大不了的。

但基本上微软忽略了带有 .NET 的旧版本的 Windows 并不是什么新鲜事。至少这些天他们正在抛出 PlatformNotSupportedException 异常。

于 2008-09-30T18:54:11.560 回答
1

微软显然正在推动以 Vista 为中心的开发环境。这不仅仅是因为显而易见的“我们需要赚钱”的原因,还因为 Vista 是酷炫的新 API 萌芽的地方。

公平地说,Windows API 一直都是这样,.NET 可能也会这样。没有您所描述的“传统”,而是使可能无法工作的 API 通知您您处于不支持它的操作系统中的传统。他们总是试图向后兼容,而不是向前限制,如果你理解的话:)

于 2008-09-30T18:54:32.450 回答
0

平台支持总是因类型而异。例如,Compact Framework 不支持许多类型。

于 2008-09-30T18:50:05.347 回答
0

我不能说全部,但我知道,例如,Vista 中的事件日志系统已经过彻底改造,与 Windows XP 中的事件日志系统几乎没有任何相似之处。它可能只是字面上不兼容。

于 2008-09-30T19:04:51.537 回答
0

这里的问题是System.Diagnostics.Eventing在 AppFabric(即 Windows Azure)中使用,因此您基本上要进行一场艰苦的战斗,让 Windows XP 与云通信。

于 2011-07-27T00:38:01.413 回答