如果我将RX-main包添加到WPF应用程序中,我将安装以下依赖包:
- Rx-Interfaces
- Rx-Core
- Rx-Linq
- Rx-PlatformServices
- Rx-Main
添加Rx-main之后,还有两个与WPF相关的附加包可以安装
- Rx-XAML
- Rx-WPF
Rx-Xaml依赖于Rx-Main, Rx-WPF依赖于Rx-Xaml。然而,这两个包都添加了对System.Reactive.Windows.Threading的引用。如果它们之间有任何不同,为什么会有两个单独的包添加对同一个程序集的引用?
另外,我是否需要添加一个或两个才能在WPF中使用RX ?
作为Rx-Xaml包的前所有者,我实际上知道这个问题的答案。过去只有Rx-Silverlight和Rx-WPF。这使得创建像ReactiveUI这样的包变得困难,因为它们依赖于其中一个,这取决于您使用的平台。
所以,我创建了Rx-Xaml,它实际上只是Rx-Silverlight和Rx-WPF的合并。然而,Rx团队意识到使用单独的软件包是愚蠢的,并问我他们是否可以自己接管名称。我欣然答应了,现在Rx-Xaml就是您应该使用的包。Rx-Xaml自2.0以来由微软所有。
tl;dr:使用Rx-Xaml,忽略Rx-WPF和Rx-Silverlight,它们已经过时了。
从我使用NuGet Package Explorer的情况来看,Rx-WPF和Rx-Silverlight都没有在各自的nupkg文件中包含任何自己的DLL(或任何其他文件,事实上)。因此,它们的作用似乎只是作为Rx-Xaml的容器。我的猜测是,您仍然应该指向Rx- wpf,因为Rx团队可能会开始向它添加特定的逻辑,这些逻辑不会包含在基本Rx- xaml包中。