既存のソリューションを.NET 4.6.2から.NET 4.7にアップグレードしています。このソリューションは、.NET 4.6.2を対象とするいくつかのnugetパッケージに依存しているため、nuget System.ValueTuple パッケージに依存しています。
しかし、アップグレード後、これらのビルドエラーが大量に発生します。
Error CS8179 Predefined type 'System.ValueTuple`2' is not defined or imported
コメント here で示唆されているように、System.ValueTuple
パッケージを削除することはできません。他のパッケージが依存しているためです。 (そして私がそれを強制すると、彼らは爆破するように見えます。)
助言がありますか?
更新8/8/17
私はcanSystem.ValueTuple
パッケージを削除することがわかったので、そのようにコンパイルするソリューションを取得できます。ただし、.NET 4.6.2をターゲットにしているように見えるソリューションには多数のNuGetパッケージがあり、したがって、依存関係としてSystem.ValueTuple
が必要です。それらをインストールしてからSystem.ValueTuple
パッケージを強制的に削除できますが、それらのパッケージのいずれかに更新がある場合、更新をインストールすると、System.ValueTuple
パッケージが再度インストールされ、システムの構築が停止しますもう一度パッケージを削除するまで。
言い換えれば、私はそれをすべて機能させることができます-しかしそれは厄介で厄介なようです。これにアプローチするより良い方法はありますか?
はい、 System.ValueTuple 4.4. にアップグレードします。
その理由は次のとおりです。
NuGetパッケージ
System.ValueTuple
は、C#タプル構文に必要なValueTuple
型を提供します。 .NET Framework 4.7では、mscorlib
に型を直接追加しました。 NuGetパッケージと.NET Framework 4.7の両方を使用すると、同じタイプが複数回表示されることになります。これにより、Stack Overflowで報告されるこのような問題が発生します。NuGetパッケージを更新して、.NET Framework 4.7のTuple型を
mscorlib
に型転送するようにしました。これにより、型が統一されるため、.NET Framework 4.7をターゲットにしながら、System.ValueTuple
に依存する他のライブラリとNuGetパッケージを使用できます。
リリースノート を参照してください。
Visual Studionでは、NuGetパッケージSystem.ValueTupleはValueTuple型を提供します。 System.ValueTupleを最新バージョンv4.4.0に更新します。手段System.ValueTupleを現在または以前のバージョンよりも高いバージョンにアップグレードします。