为什么我不能在WPF应用中使用Windows名称空间,但我可以在通用应用中使用它



为什么我可以在Windows通用应用程序中使用Windows命名空间

例如使用Windows.Networking.Sockets;使用Windows.Storage.Streams;

但我不能在WPF中使用它?

我在Networking and Storage(网络和存储)下看到红线,表示该引用不存在。

我在谷歌上搜索的一个修复方案是添加PresentationFrame作为参考。唯一的问题是,我在参考文件夹中看到PresentationFrame。

感谢

.NET框架基类库有点混乱,因为有不同的实现,都来自微软,都有自己的差异(历史上有"Full Fat"框架、客户端配置文件框架、Compact框架和Micro框架用于嵌入式设备,XNA用于Xbox360,然后Silverlight也有自己的版本)。

Windows8添加了Metro/Modern/"应用商店"平台,这是它自己的.NET版本,有一个稍微不同的、与Twilight Zone不同的基类库,称为"Windows运行时"。这个库提供了以前在System命名空间中看到的许多类型,现在位于Windows命名空间下。Windows 10将该平台更名为"通用应用程序"。

有关更多信息,请参阅此处:https://msdn.microsoft.com/en-us/library/br230302.aspx.令人沮丧的是,微软建议:

通常,您不会简单地将现有的.NET Framework应用程序转换为Windows 8.x Store应用程序;您为新的用户体验重新设计了.NET Framework应用程序

对于用户界面层来说,这听起来是合理的(因为通用平台有自己的基于XAML的用户体验框架,它与WPF相似,但不完全相同)-然而,该平台还要求您修改所有针对.NET编写的库代码,以使用IO的Windows名称空间,这给开发人员带来了巨大的负担,尤其是如果他们使用的是没有源代码访问权限的第三方库。

最新更新