Visual Studio 2012 C# コンソール アプリケーションで、".NET Framework Target" を 4.5 から 4.0 にダウングレードします。両方のフレームワークがインストールされた Win 7 Pro。
次に、アセンブリを参照します。アセンブリは、警告を通じて次のように訴えます。
The primary reference "System.Threading.Tasks.Dataflow, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" could not be resolved because it has an indirect dependency on the framework assembly "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0". To resolve this problem, either remove the reference "System.Threading.Tasks.Dataflow, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" or retarget your application to a framework version which contains "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
この時点でコンパイルしようとすると、アセンブリがまったく参照されていないかのように、参照されているアセンブリの型と名前空間が利用できないため、エラーが発生します。
[参照の追加] ダイアログには System.Runtime の選択肢はありませんが、手動で C:\Windows\Microsoft.NET\Framework\v4.0.30319\ に移動し、そこにある System.Runtime アセンブリを参照すると、警告が消えます。そして私はコンパイルすることができます。
質問:
System.Runtime バージョンのそのような強制は、将来的に潜在的な問題になりますか (展開)。
VS プロジェクトのプロパティがターゲット Framework 4.0 に設定されている場合 (4.0 SystemRuntime/CLR をターゲットにすることに関連していません)、参照された DLL がそれを取得しないのはなぜですか?また、プロジェクトへの参照を手動で追加するのはなぜですか?