从.NET框架发布的最初几天起,就有了最低的操作系统支持:
这种最低操作系统支持使得只使用框架就可以忽略特定于平台的问题。较旧的平台上忽略了较新的功能。例如,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上不可用。
答案 0 :(得分:3)
最低操作系统支持意味着产品在特定平台及更高版本上进行了测试。它并不保证所有功能(或像.Net这样的开发平台的类/ API)都可以在所有支持的平台上运行。
XP中不存在特定于Vista的本机API。 .Net 3.5增加了对这些API的托管世界的支持,但它并不试图为XP上的不存在的本机API提供托管实现。
答案 1 :(得分:1)
我可以用经验告诉你,.NET从未真正用于Windows 98或ME。我记得早在2002年版本1.0是新版本时,一些同事和我发现,除了带有一些按钮和简单功能的WinForm之外,任何事情都会变得更加复杂,但不会在Windows 9x上运行,尽管微软声称相反。鉴于我们进入XP的一年,我们可以合理地期望Windows 2000至少在我们当时处理的机器上,这不是什么大问题。
但基本上微软忽视旧版本的Windows与.NET并不是什么新鲜事。至少他们现在抛出了PlatformNotSupportedException异常。
答案 2 :(得分:1)
微软显然正在推动以Vista为中心的开发环境。这不仅仅是因为显而易见的“我们需要赚钱”的原因,而且还因为Vista是新的API正在蓬勃发展的地方。
公平地说,Windows API一直都是这样,它可能与.NET一样。你所描述的并没有这样的“传统”,而是制作可能不起作用的API的传统,通知你是在一个不支持它的操作系统中。他们总是试图向后兼容,而不是转发限制,如果您理解:)
答案 3 :(得分:0)
平台支持始终因类型而异。例如,Compact Framework不支持许多类型。
答案 4 :(得分:0)
我无法代表所有这些,但我知道例如Vista中的事件日志系统是totally overhauled,并且与Windows XP中的事件日志系统几乎没有任何相似之处。它可能只是字面上不相容。
答案 5 :(得分:0)
这里的问题是在AppFabric(即Windows Azure)中使用 System.Diagnostics.Eventing ,所以你基本上要打一场让Windows XP与云对话的艰难战斗。