我目前正在重新组织我的 WP8 项目,以便拥有一个可移植类库,这可能会产生一个 W8 应用程序。
我正在使用 MVVMLight 并具有以下代码:
在可移植类库中:
namespace MyApp.Shared.Messages
{
public class MyItemSelectedMessage : MessageBase
{
public MyItemSelectedMessage(MyItem item)
{
Item = item;
}
public MyItem Item { get; set; }
}
}
在我的 WP8 应用程序中,我仍然有 ViewModel(因为 Telerik 和其他一些我无法外包给 PCL 的东西),我使用以下代码来注册消息:
Messenger.Default.Register<MyItemSelectedMessage>(this, msg => SelectedItem = msg.Item);
代码之前工作正常,但现在 VS 在给定行的 WP8 应用程序中给出以下错误:
The type 'GalaSoft.MvvmLight.Messaging.MessageBase' is defined in an assembly that is not referenced. You must add a reference to assembly 'GalaSoft.MvvmLight, Version=4.2.30.16997, Culture=neutral, PublicKeyToken=null'
在我的 WP8 项目中,我安装了 MvvmLight (v4.2.30.23483),并且在我的 PCL 中存在用于 PCL 的 MvvmLight 库 (v4.2.30.16997),两者都是来自 Nuget 的最新版本。我是否需要降级软件包以获得相同的内部版本号、手动添加库或者我可以做什么才能使其工作?
提前致谢!
最佳答案
您应该引用两个项目中的 Portable.MvvmLightLibs NuGet 包,而不是任何不可移植的 MvvmLight 包。 Portable.MvvmLightLibs 包包括对 PCL 和特定于平台的库的支持。
关于c# - 如何让 MVVM Light Messenger 与 PCL 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21993994/