2016-10-07 18 views
0

Prismを使用してUniversal Windowsアプリケーションを作成すると、アプリケーションの実行中にエラーが発生することがあります。Windows 10 UWPにPrism.unity 6.2.0を追加した後、アプリケーションが例外をスローする

  • プリズム(インストール・パッケージPrism.unity)
  • 変更のAppクラスをインストールするには、Visual Studioの2015年
  • 使用NuGetを使用して新しいUWPアプリケーションを作成します。ここでは、問題を再現する手順は、 PrismUnityApplication(以下コード)を継承する
  • フォルダと呼ばれるビューを作成し、メインページと呼ばれる新しいページを追加し、それが正しい名前空間

コードであることを確認すること:

私は、アプリケーションを実行すると
using Microsoft.Practices.Unity; 
using Prism.Events; 
using Prism.Mvvm; 
using Prism.Unity.Windows; 
using Prism.Windows.AppModel; 
using Prism.Windows.Navigation; 
using System; 
using System.Collections.Generic; 
using System.Collections.ObjectModel; 
using System.Globalization; 
using System.Threading.Tasks; 
using Windows.ApplicationModel.Activation; 
using Windows.ApplicationModel.Resources; 
using Windows.System; 
using Windows.UI.Notifications; 
using Windows.UI.Xaml; 

namespace TestAppForPrism { 
/// <summary> 
/// Provides application-specific behavior to supplement the default Application class. 
/// </summary> 
sealed partial class App : PrismUnityApplication { 

    public App() { 
     this.InitializeComponent(); 
    } 

    protected override Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args) { 
     NavigationService.Navigate("Main", null); 
     return Task.FromResult<object>(null); 
    } 

    protected override Task OnInitializeAsync(IActivatedEventArgs args) { 
     Container.RegisterInstance<INavigationService>(NavigationService); 

     return base.OnInitializeAsync(args); 
    } 
} 
} 

は、例外がスローされます。

は、ファイルまたはアセンブリ「System.Runtime.Serialization.Xmlをロードできませんでした

、バージョン= 4.1.1.0、文化=中立、なPublicKeyToken = b03f5f7f11d50a3a 'またはその依存関係の1つ。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)

設定が間違っていますか?

答えて

1

問題はVisual Studio 2015のデフォルトのUWPテンプレートにはまだ"Microsoft.NETCore.UniversalWindowsPlatform": "5.1.0"が含まれていますが、これはバージョン5.2.2です。

そのパッケージを5.2.2にアップデートするだけで、すべてがうまくいくはずです。あなたのコードの


小追記:

  • リターンTask.CompletedTaskあなたは、タスクを実行する必要がない場合。これは.NET 4.6で追加されています。もう少しパフォーマンスが良いです。
  • INavigationServiceをコンテナに登録する必要はありません。これは、すでにベースクラスで行われています。だからあなたのコードが

    sealed partial class App : PrismUnityApplication 
    { 
    
        public App() 
        { 
         this.InitializeComponent(); 
        } 
    
        protected override Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args) 
        { 
         NavigationService.Navigate("Main", null); 
         return Task.CompletedTask; 
        } 
    } 
    
    までトリミングすることができ

0

しばらく遊んでみた後、私は私が解決策見つけたと思う:NuGetコンソールで

を、私は「更新パッケージ-reinstall」を実行して、ソリューションを再構築しました。私はまだエラーウィンドウに「異なるバージョンの同じ依存アセンブリの間で競合が見つかりましたが、解決できませんでした。これらの参照競合は、詳細ログにログを設定するとビルドログに表示されます。その例外をそれ以上受信することなくアプリケーションを実行できるようにします。

関連する問題