C# 如何让MVVM Light Messenger与PCL一起工作

C# 如何让MVVM Light Messenger与PCL一起工作,c#,windows-phone-8,windows-phone,mvvm-light,portable-class-library,C#,Windows Phone 8,Windows Phone,Mvvm Light,Portable Class Library,我目前正在重新组织我的WP8项目,以便拥有一个可移植的类库,这可能会产生一个W8应用程序 我使用的是MVVMLight,代码如下: 在可移植类库中: namespace MyApp.Shared.Messages { public class MyItemSelectedMessage : MessageBase { public MyItemSelectedMessage(MyItem item) { Item = ite

我目前正在重新组织我的WP8项目,以便拥有一个可移植的类库,这可能会产生一个W8应用程序

我使用的是MVVMLight,代码如下:

在可移植类库中:

namespace MyApp.Shared.Messages
{
    public class MyItemSelectedMessage : MessageBase
    {
        public MyItemSelectedMessage(MyItem item)
        {
            Item = item;
        }
        public MyItem Item { get; set; }
    }
}
在我的WP8应用程序中,我仍然拥有ViewModels(因为Telerik和其他一些我无法外包给PCL的东西),我使用以下代码注册消息:

Messenger.Default.Register<MyItemSelectedMessage>(this, msg => SelectedItem = msg.Item);
在我的WP8项目中,我安装了MvvmLight(v4.2.30.23483),在我的PCL中有用于PCL的MvvmLight库(v4.2.30.16997),这两个库都是从Nuget更新的。我是否需要降级一个包以获得相同的版本号,手动添加库,或者我可以做些什么来使它工作


提前谢谢

您应该引用两个项目中的Portable.MvvmLightLibs NuGet包,而不是任何非Portable的MvvmLight包。Portable.MvvmLightLibs包包括对PCL和平台特定库的支持。

但我的WP8应用程序中确实有2个MVVMlightlib—WP8 nuget包依赖的那个(无法删除…)和PCL库。我如何告诉我的代码它应该使用PCL版本?或者我如何用PCL版本替换WP8所依赖的版本?@sibbl您使用的WP8 NuGet包依赖于MvvmLight?我以前也用过的官方软件包。将PCL版本添加到WP8项目中,会添加另一个MvvmLightLib,因此VS只会给我很多错误,因为名称空间出现了两次。@sibbl您需要从WP8项目中卸载官方软件包,并安装Portable.MvvmLightLibs软件包,而不是头文件。这是多么容易。。。我认为WP8包比PCL包里面有更多神奇的东西。谢谢你的帮助,它工作得很好!:)
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'