web-dev-qa-db-ja.com

コンパイラが「System.Runtime.CompilerServices.DynamicAttribute」タイプを必要としたため、「dynamic」を利用するクラスまたはメンバーを定義できません

GitHubから取得したローカルコンピューターで.NET MVCアプリケーションを実行しようとしています。

Visual Studioで実行をクリックすると、すべてが準拠し、新しいブラウザーウィンドウが開いてエラーが表示されます。

CS1980:コンパイラーが「System.Runtime.CompilerServices.DynamicAttribute」タイプを必要としたため、「dynamic」を利用するクラスまたはメンバーを定義できません

同じウィンドウのコンパイラセクションには、次のエラーが表示されます。

enter image description here

私はグーグルでチェックしました this は同じエラーのようです。

この男は自分で動的型を使用していましたが、一方で動的型は使用していません。これは.NETのコンパイラによって自動生成され、動的をサポートする.net 4.5を使用しています。

私は同じソリューションを適用しようとしました(すべてのSystem.Core参照を4.0に変更しました)が、問題はそれらのすべてが既にバージョン4.0であるということです。

どうすればこれを解決できますか?

33

移行しようとしたプロジェクトで同様のエラーが発生しました。プロジェクトのフレームワークを1つまたは2つ前のバージョンにターゲット変更してみてください。エラーが発生しないターゲットバージョンを見つけたら、最初に問題が発生したバージョンにターゲットを変更してください。

いくつかの古いライブラリを参照している4.6.2を対象としたWebサイトプロジェクトで同じエラーが発生し、それを4.5.1に再ターゲットし、エラーを解決しました。私はすぐに4.6.2にターゲットを変更しましたが、エラーは再び発生しませんでした。

26
Granicus

「従来の」MVCアプリ(新しい.NET Core/vNextアプリではありません)を使用してVS2015.3に更新した数日後に、突然このエラーが発生しました。

このエラーは完全なニシンである可能性があります。

確認してください:

  • 他のエラーはまったくありません
  • 「出力」ウィンドウに表示されないエラーがないか、出力ウィンドウを確認しました。
  • 競合する参照 がないことを確認してください

私の場合、エラーを引き起こし、何らかの理由でこの奇妙な「赤いニシン」の動的エラーも引き起こしたTypeScriptエラーがありました。

enter image description here

私の修正は、.csprojファイルを作成し、TypeScriptツールのバージョンを1.8に更新します(プロジェクトをアンロードして手動で編集する必要があります)。私が言ったように、これはエラーとは関係ありませんが、他の誰かがこの同じ問題で終わる可能性があるため、詳細を述べます。

1.7はTypeScriptモジュールシステムに対して「なし」を受け入れなかったのに対し、1.8は受け入れなかったため、エラーが発生したと考えています。

8
Simon_Weaver

私はこれと同じ問題を抱えていましたが、ここでの答えはどれもそれを解決しませんでしたが、正しい方向に私を向けました。マシンの.NETバージョンを新しいバージョンに更新しなかったと思います。それをインストールした後、ターゲットフレームワークをロールバックし(提案どおり)、新しいフレームワークを再ターゲットし、さらにいくつかの追加の操作を行いました。

  1. パッケージマネージャーでこれを実行して、すべてのパッケージを再インストールしました。

    update-package -reinstall

また、プロジェクトを4.5で機能していたプロジェクトと比較して、次のことを行いました。

  1. プロジェクトファイルを開き、「BCL」関連の要素をすべて削除しました。
  2. プロジェクトのNuGetパッケージマネージャーにあるすべての「BCL」パッケージをアンインストールしました(4.5以降に移行する必要はないでしょうか...?)
  3. 何らかの理由で更新されなかったSystem.Net.Httpの古いパッケージバージョンを削除しました(web.configを参照-バージョンにはoldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"と表示されるはずです)。
  4. VSを再起動する必要があります。
  5. ソリューションを再構築します。
  6. エラーはなくなりました。 ;)

他のエラーを解決するために私がしたもう1つのことは、ここにあるすべてのファイルを削除してコンポーネントキャッシュをクリアすることです。

C:\Users\{USERNAME}\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache\

[暴言]このすべてで1日無駄になりました。人生のもう1日を盗んで、ありえない無意味な問題を修正してくれたMSに感謝します。アップグレードするたびに、私はいつも素晴らしい驚きと、古いニワトリをアップグレードする人にとって、これらの競合を検出するのに問題はないでしょうか?何かがうまくいかないときは、おそらくより良いエラートレースですか?それは難しいとは思いません。 ?[/ rant]

6
James Wilkins

System.Dynamic.Runtimeへの参照を追加してくれました。

5
Fredrik Hall

同じエラーが発生しました。削除する必要があるデータベースセットの未使用テーブルが2つしかありませんでした。自動生成されたコードの作業で手動でsthを変更したとき、なぜ機能したのか疑問に思いますが、削除した後は機能しました。

そのため、このような不整合によりこのエラーが発生する可能性があることに注意してください。

1

私の解決策は、viewsフォルダーの下のweb.configでMVCのバージョンを修正することでした。例えば。プロジェクトはMVCアセンブリバージョン5.2.2.0を参照していましたが、Views/web.configファイルではバージョン5.2.4.0でした(画像を参照)。

画像

0
Geafer