LoginSignup
1
0

More than 5 years have passed since last update.

System.ValueTuple.dllの参照エラー(unresolved)

Last updated at Posted at 2019-03-28

現在参画している案件で、ASP.NET Web Siteの保守開発を行っている。

プロジェクトのターゲットフレームワークは.Net Framework 4.5.2。
なので、ValueTupleを使用するにはSystem.ValueTuple.dllをNuGetでダウンロードし、

プロジェクトから参照できるようにしておく必要がある。
(Web Siteの場合、binにdllファイルを配置するだけ)

しかし、dllをbinに配置しただけだと以下のようなビルドエラーが表示されてしまう。

BC30002: Type 'ValueTuple' is not defined.

 
上記エラーを修正するためには、Web.configのassemblyBindingセクションに下記を追加する

<dependentAssembly>
 <assemblyIdentity name="System.ValueTuple" culture="neutral" publicKeyToken="cc7b13ffcd2ddd51" />
 <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>

これでビルドエラーが消え実行できるようになるが、ValueTupleを使用しているページを表示すると・・・

以下のようなコンパイルエラーが発生してしまった。

BC30560: 'ValueTuple' is ambiguous in the namespace 'System'.

 
原因は環境依存で、Windows 10 Fall Creators Updateから.Net Framework4.7が標準インストールされ、4.7ではValueTupleがGACの方にも追加されてしまったからのようだ。

ということで、ターゲットフレームワークが4.7以上の場合、System.ValueTuple.dllの参照は削除しなければならないと思うのだが、ターゲットフレームワークが4.7未満のプロジェクトはどうしたらよいのか・・・

解決策はターゲットフレームワークを4.7にするしか無いような気がする。

以下、参考URL
[https://github.com/dotnet/roslyn/issues/18775:title]

 

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0