名称空间Microsoft vs名称空间Windows

名称空间Microsoft vs名称空间Windows,windows,c++-winrt,winui,Windows,C++ Winrt,Winui,我正在尝试VisualStudio中提供的C++/WinRT和WinUI模板。我对名称空间::winrt::Microsoft和::winrt::Windows感到困惑。我只知道前一个,因为自动生成的回调函数使用了::winrt::Microsoft中的类型,并且不会编译,因为我错误地传递了::winrt::Windows命名空间中同名的类型。我找不到有关::winrt::Microsoft的更多信息,甚至找不到官方文档 据我所知,::winrt::Microsoft和::winrt::Wind

我正在尝试VisualStudio中提供的C++/WinRT和WinUI模板。我对名称空间
::winrt::Microsoft
::winrt::Windows
感到困惑。我只知道前一个,因为自动生成的回调函数使用了
::winrt::Microsoft
中的类型,并且不会编译,因为我错误地传递了
::winrt::Windows
命名空间中同名的类型。我找不到有关
::winrt::Microsoft
的更多信息,甚至找不到官方文档

据我所知,
::winrt::Microsoft
::winrt::Windows
的命名类型大多相同,但
::winrt::Microsoft
中缺少一些类型。例如,
::winrt::Windows::UI::Colors
::winrt::Microsoft::UI::Colors
都存在,但
::winrt::Windows::UI::Color
在Microsoft命名空间中没有“替代项”

问题:

  • 为什么我们有两个几乎相同但细微不同的名称空间
  • 在什么情况下我应该选择其中一种
  • 为什么
    ::winrt::Microsoft
    缺少某些类型

Windows
是所有UI相关类型所在的原始命名空间。这些类型中的一些被“改造”到微软的命名空间中,作为摆脱其UWP的痛苦的一部分


如果(较新的)
Microsoft
名称空间中有可用的类型,则使用该类型。转换尚未完成,因此缺少某些类型。

更具体地说,
Windows
是Windows的一部分
Microsoft
是Microsoft的产品,但不是Windows的一部分。正如您所指出的,正在努力将许多技术从Windows中分离出来。@Ray您的意思是他们正在试图使WinUI跨平台吗?使WinUI成为跨平台GUI框架并不是将其从操作系统中分离出来的直接目标。这样做可以让WinUI以自己的速度前进,而不必等待新版本的Windows来部署它。至少同样重要的是,使WinUI成为一个独立的库打开了将其向后移植到以前版本的操作系统的机会。关于这如何适应更大范围的开发人员平台向前移动的更多信息发布在repository.Right中。将其与Windows分离意味着它不必等到下一版本的Windows才能添加功能或修复bug。(拆卸是根据交付时间表进行的,而不是支撑平台。)