2

我目前正在重組我的WP8項目,以便創建一個可移植類庫,這可能會導致W8應用程序。如何獲得使用PCL的MVVM Light Messenger

我使用MVVMLight並有下面的代碼:

在便攜式類庫:

namespace MyApp.Shared.Messages 
{ 
    public class MyItemSelectedMessage : MessageBase 
    { 
     public MyItemSelectedMessage(MyItem item) 
     { 
      Item = item; 
     } 
     public MyItem Item { get; set; } 
    } 
} 

在我WP8的應用程序,我仍然這樣做有(因爲Telerik的的的ViewModels和一些其他的東西我不能外包給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還有的MvvmLight庫用於PCL(v4.2.30.16997 ),都是最新的Nuget。我是否需要降級軟件包以獲得相同的內部版本號,手動添加庫或我能做些什麼才能使其工作?

提前致謝!

回答

3

您應該從兩個項目中引用Portable.MvvmLightLibs NuGet軟件包,而不是任何非便攜式MvvmLight軟件包。 Portable.MvvmLightLibs軟件包包含對PCL和平臺特定庫的支持。

+0

但是我的WP8應用程序中有2個MvvmLightLibs - WP8 nuget軟件包依賴的那個(無法刪除...)和PCL庫。我如何告訴我的代碼它應該使用PCL版本?或者我如何將WP8所依賴的版本替換爲PCL版本? – sibbl

+0

@sibbl您使用的WP8 NuGet軟件包取決於MvvmLight? –

+0

http://www.nuget.org/packages/MvvmLight/官方包,我以前也用過。添加PCL版本到WP8項目,增加了另一個MvvmLightLib,所以VS只會給我很多錯誤,因爲命名空間會出現兩次。 – sibbl

相關問題