Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

現在参画している案件で、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]

 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした