2017-11-27 27 views
0

私は本当に奇妙な状況にあります。まずは、これが私の最初のCaliburn.Microプロジェクトです。Caliburn.Micro .net 4.0でエラーが発生しますが、.net 4.6.1で動作します。

プロジェクトは、Caliburn.Micro 3.1.0を使用しています。これは、.net 4.0を対象としています。問題は、4.6.1のシステムではうまく動作しますが、.net 4.0では動作しません。

利用可能なすべてのCaliburn.Microバージョンをインストールしようとしましたが、問題は残ります。私がアプリケーションをデバッグできる唯一の方法は、さまざまなThread.SleepsまたはMessageBoxを使用することでした。私は

に解決する最初のメッセージで、すべてのメッセージボックスを参照してください4.6.1搭載したマシンでは

 protected override object GetInstance(Type serviceType, string key) 
    { 
     MessageBox.Show(container.Catalog.Parts.ToString()); 
     MessageBox.Show(container.Catalog.Parts.Count().ToString()); 
     MessageBox.Show("3rd message."); 

     var contract = string.IsNullOrEmpty(key) ? AttributedModelServices.GetContractName(serviceType) : key; 

     var exports = container.GetExportedValues<object>(contract); 

     if (exports.Any()) 
      return exports.First(); 
     throw new Exception(string.Format("Could not locate any instances of contract {0}.", contract)); 
    } 

:最後に、私は、ブートストラップである上記のコードのための2つのシステム間のこの大きな違いに付属しています

System.ComponentModel.Composition.Hosting.AggregateCatalog 

だけ4.0を実行しているマシン上で、私はそれがSystem.ComponentMode間の差が縫い目ので

System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.SelectMany(catalog => catalog.Parts) 

に解決された最初のメッセージを見ることができますl。Windows 7マシン上のWebからインストールされた.net 4.0からの構成と、Windows 10に付属の.net 4.0。ただし、私の開発マシンで使用するファイルとWindows 7 .net 4.0マシンで使用するファイルは、同バージョン4.0.30319.1。したがって、ファイルは同じでなければなりません。

この時点で私はとても固執しています。なぜアプリケーションは4.6.1で動作しますが、.net 4.0では次のエラーを出しますか?

enter image description here

+0

クラッシュは、.NET Framework 2.x/3.xの一部であるCLR20r3によって発生しているようです。 –

答えて

0

問題は、参照されたプロジェクトの一つにありました。プロジェクトは.net 4.5でしたが、.net 4.0に変更した後はSystem.Net.Http 4.0.0パッケージが残っていました。私はそれをすべて削除した後に動作しています。

NuGetのすべてのパッケージを再インストールし、ソリューション内のすべてのプロジェクトを再コンパイルすることをお勧めします。

本当の問題は、私が質問と回答を削除するかどうか私にはわからないこの時点でKB246871

なしMicrosoft.Bcl.Asyncを使用していたということでした。

+0

CMで始まるメンバーや、何年も一緒に働いているメンバーにとっては便利なので、削除しないでください。 – arcticwhite

関連する問題