Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@shimamura_io

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

現在参画している案件で、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
0
Help us understand the problem. What are the problem?