我目前正在重新组织我的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);
代码工作正常,但现在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的最新版本。我是否需要降级软件包才能获得相同的内部版本号,手动添加库或我可以做些什么才能使其正常工作?
提前致谢!
答案 0 :(得分:3)
您应该从两个项目中引用Portable.MvvmLightLibs NuGet包,而不是任何非可移植的MvvmLight包。 Portable.MvvmLightLibs包包括对PCL和特定于平台的库的支持。