タイプ 'Expression <>'は、参照されていないアセンブリで定義されています


84

ASP.NET MVC4.5.2フレームワーク。

入力した後

@Html.LabelFor()
or 
@Html.EditorFor()

ビューで

エラーが発生します:タイプ 'Expression <>'は、参照されていないアセンブリで定義されています。アセンブリ 'System.Core、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'への参照を追加する必要があります。

アセンブリリファレンスSystem.Core.dll、バージョン4.0.0.0、ランタイムバージョンv4.0.30319を追加しました。また、web.configで行いました


回答:


41

ずっと後ですが、私はあなたと同じ問題で走りました。問題は、アセンブリ参照が欠落しているというエラーが表示されたため、Razorビュー(.cshtml)にアクセスできなかったことです。つまりSystem.Web.Mvc、プロジェクト参照に含まれていてもです。調査したところ、インストールされているNuGetのバージョンは5.2.3でしたが、プロジェクトには5.2.0が必要でした。解決策は、MVCバージョンをダウングレードすることです。

  1. [プロジェクト]-> [NuGetパッケージマネージャー]に移動します。
  2. MVCを検索します。それが最初の結果になります。
  3. 次に、NuGetパッケージの詳細のドロップダウンからダウングレードを選択して送信します。

すべてのダイアログを確認すると、準備が整います。


14
プロジェクトに5.2.0が必要であることにどのように気づきましたか?
バニス2016

3
@Vanice .NET Frameworkのバージョンに依存すると思います:.NET 4.5.2-> MVC 4.0.0; .NET 4.6.0-> MVC 5.2.0; .NET 4.6.1-> MVC5.2.3。(未確認)
JoaoRibeiro 2017年

9
.net 4.7を使用していますが、まだこの厄介なエラーがあります
Sven

1
同じ問題が発生しましたが、web.configのデバッグ値がfalseに設定されていたことがわかりました。「True」に設定します<compilationdebug = "true" targetFramework = "4.5" /> <httpRuntime targetFramework = "4.5" />
mlaribi 2018

私は上記の解決策を試しましたが、うまく機能しています。私のVSソリューションのバージョンは4.6.2であったと私は5.2.4。だから私から5.2.3へのMVCを格下げMVC 5.2.3がネット4.6.2と互換性があることを知るようになった
イブラヒムINAM

58

あなたがまだこの問題を抱えているかどうかはわかりませんが、私も同じ問題を抱えていました。

私はここで解決策を見つけることができました

/programming/6496223/compilation-error-in-net-4-0-web-config-linq-not-found

<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

これがお役に立てば幸いです。


すでに私はそれを言った..私はこの質問を投稿する前にこれを試しました。とにかくあなたの両方に感謝します
mansoor 2015

1
大丈夫!できます。有効にするには、cshtmlファイルを閉じてから再度開く必要があることに注意してください。
MahdiAtaollahi19年

これは、すべてのweb.configを調べて、stackoverflow.com
AMG

それは動作しますが、私はこの解決策が少し汚れていることに気づきました。とにかく、私の場合、System.Coreへの参照のみを追加します
T-moty

45

このエラーは、VisualStudioがSystem.Web.Mvcアセンブリを見つけてRazorビューのインテリセンスを強化できないことを意味します。修正するには、次のいずれかまたは両方が必要になる場合があります。

  1. メインのweb.config(Webサイトのルートにあるもの)のコンパイルプロパティの.NET Frameworkのバージョンが、プロジェクトのプロパティで指定されているものと同じであることを確認します。

[ルート] /Web.config:

<system.web>
    <compilation targetFramework="4.6" />

プロジェクトのプロパティ:

プロジェクトのプロパティ

  1. ビューweb.configで指定されたMVCアセンブリのバージョン(viewsフォルダーにあるもの)が、プロジェクトで使用しているMVCアセンブリと同じであることを確認してください。

[ビューフォルダー] /web.config:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

MVCアセンブリリファレンスプロパティ:

MVCバージョン


3
これは私のために働いた。どうもありがとう。
vibs2006 2017

1
これは私にとってもそれを解決しましたが、直接ではありません。間違ったバージョンのファイルをbinフォルダーから削除し、nugetを介してmvcを更新する必要がありました。その後、正しいバージョンがbinフォルダーに配置され、機能しました。それでもnuget経由で更新後のbinフォルダで間違ったバージョンを取得しておく場合は、binフォルダに既存のものを削除
ジョシュアK

ありがとうございました。NuGetを介してMicrosoft.AspNet.Mvcをv5.2.7に更新しましたが、アプリがまだ機能しているときに、.schtmlファイルにこのエラーが表示され始めました。<system.web.webPages.razor>の下のViewsフォルダーにあるweb.configは、まだv5.2.3であることが判明しました。v5.2.7に変更すると役に立ちました。
vkelman

これはうまくいきました-ありがとう![ビュー] /web.configを確認することを忘れないことが私にとって重要でした。バージョンは他のどこでも一致しましたが、そこにあります!
ジェイドーキンス

21
  • cshtmlファイルを閉じます
  • ソリューションを再構築する
  • cshtmlファイルを開く
  • それでもエラー?VisualStudioを再起動します
  • それでもエラー?ctm1988の回答を使用する

私はすべてがここで言及された試してみました...しかし、まだその作業はありません..私は行方不明の依存関係を考えて完全に視覚的なスタジオにその作品を再インストールする理由である一方で...
マンスール

正常に機能しているプロジェクトがあり、突然この問題が発生した場合は、これがおそらく修正です。
Simon_Weaver 2017

私は信じることができないどのくらいの頻度この作品
nmit026

16

私はこれらのほとんどを試しましたが、最終的にはプロジェクトをアンロードし、csprojファイルを編集して、以下を追加しました。

<Reference Include="System.Core" />

https://stackoverflow.com/a/38371981/2335660


2
できます!Visual Studioは、System.Coreがすでに追加されていると考えているように見えますが、実際には追加されていません。したがって、これを手動で行う必要があります
isxaker 2017年

10

プロジェクトディレクトリから[projectName] .csproj.userファイルを削除すると役に立ちました。


2017年のAsp MVC5 Vsが私のために働いた
Speuline

2
これは、VS2019とMVC5で機能しました。また、bin / objフォルダーと.vsフォルダーもクリーンアップしました。
リーニエンシー

7

私はまったく同じ問題を抱えていましたが、どの解決策も問題を解決しませんでした。私はこれを私のweb.config内に追加しなければなりませんでしたSystem.Web

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />

config周りのいくつかを変更するときに私はそれを削除しました。


任意のテクノロジー以上のタグを追加してください..タグが見つかりません
Vikrant Kashyap 2016

コンパイル/ targetFramework属性を追加することは私のために働きました。
トムバウアーズ

ターゲットフレームワークに誤って2つの異なる値を追加しましたが、これで問題が解決しました。
geethanga 2016

これにより、ハイブリッドasp.net/webformsアプリの問題が修正されました。アプリケーションのターゲットフレームワークを4.7にアップグレードしましたが、これら2つのweb.config設定がまだ4.5を指していることに気づきませんでした。
トム・リーガン

同じ問題が4.8のこの回答によって解決されました
Mamdouh

4

私の場合、このメッセージはResharperがオンになっているときにのみ表示されました。Resharperキャッシュをクリアし、VSを再起動し、Resharperをオフにしてから、再度オンにしました。メッセージは消えました。


1
私の場合、VSを閉じて再起動するだけです。私はリシャーパーを持っていますが、それで何もする必要はありませんでした。
JayJay 2016年

3

アセンブリが見つからないという同じ問題が発生しましたが、VS2017ビルドでアセンブリがBinフォルダーに正しくコピーされないことがありました。これらの手順は私を助けました:

  • Webプロジェクトの参照ノードに移動します
  • System.Coreへの参照を見つけます
  • VSプロパティウィンドウを開きます
  • プロパティウィンドウで、[ローカルコピー:False]を[True]に変更します

このコメントから: CS0012:タイプ '##### Any type #####'は、参照されていないアセンブリで定義されています


このリンクは質問に答えることができますが、ここに答えの本質的な部分を含めて、参照用のリンクを提供することをお勧めします。リンクされたページが変更されると、リンクのみの回答が無効になる可能性があります。-レビューから
スティーブゴメス

1
@SteveG。ありがとう、スティーブ!編集しました。これまであまりコメントしておらず、SOのエチケットが不足しています... :-)
Angel_D 2017

1
これは私の問題を解決しました。VisualStudioの再起動も必要だったことに言及する必要があります。ありがとうございます。
Saeed Mousavi

3

Web.configで、以下を変更する必要がありました。

  <system.web>
    <compilation debug="true" targetFramework="4.7">

  <system.web>
    <httpRuntime targetFramework="4.7" />
    <compilation debug="true" targetFramework="4.7">

1
ありがとう、@ juFo!これにより、MVC5を使用するVisualStudio 2019で修正されました。MVCプロジェクトのターゲットフレームワークは4.7.2でしたが、web.configのtargetFrameworkinタグ<httpRuntime><compilation>タグは4.7.1でした。プロジェクトの.NETFrameworkバージョンを正しく反映するように属性を更新するだけで、修正されました。
ICODE

2

cshtmlファイルのビルドアクションが「コンテンツ」に設定されていることを確認します。

ReSharperを使用していますが、何らかの理由で、テンプレートを呼び出すときに生成されるファイルがデフォルトで「なし」になっていることに気付きました。


2

以下をWeb.config(ルート内)に追加します。私は以前の提案のすべてを絶対に試しましたが、以下が見つかるまで何も機能しませんでした。それが他の誰かの時間を節約することを願っています。

targetFramework = "4.6.1"を使用していますが、使用しているバージョンと異なる場合は変更してください。

<system.web>
   <compilation debug="true" targetFramework="4.6.1" />
   <httpRuntime targetFramework="4.6.1" />
</system.web>

2

System.Core.dllファイルをbinフォルダーに手動で追加します。VSを再起動し、プロジェクトをビルドします。私のために解決しました

@Htmlヘルパーと私の剣道グリッドのすべてのビューでデザインエラーが発生しました。

Web.configにSystem.Coreアセンブリを追加しても、MVCバージョンのダウングレードは行われませんでした。また、System.Coreへの参照を手動で追加しようとするとエラーが発生します。

'System.Core'への参照を追加できませんでした。このコンポーネントは、ビルドシステムによってすでに自動的に参照されています。

プロジェクトプロパティのTargetFrameworkがプロジェクトweb.configのTargetFrameworkと一致することを確認してください。

binフォルダーのスクリーンショット


1

私の場合、プロジェクトメニューの下に「C#6.0 / VB14を有効にする」というオプションがありました。このオプションを選択するとうまくいきました。以前、この投稿で提案されているように、web.configを変更したり、VisualStudioを再起動したりしてみました。


1

私も同じ問題に直面しました。基本的に問題は、の異なるバージョンを使用することですSystem.Web.Mvc。だからあなたが開くべき最高のものTools > Nuget Package Manager > Manage Nuget Packages for Solution。あなたはおそらく見ることができますSystem.Web.MvcCosolidateのタブ。アップグレードまたはダウングレードが最良のオプションです。現在の最新の.Netフレームワークを使用している場合は.Net 4.6.1、すべてのSystem.Web.Mvcバージョンをにアップグレードする必要があります5.2.4.0。幸運を!


アップグレードが必要なパッケージが12個あり、すべてを更新すると、slnは問題なく実行されました。ありがとうございました。
ジェイミー

1

/Views/web.configのアセンブリ参照を修正することで修正しました。画像を参照してください。

ここに画像の説明を入力してください


1

bin、.vs、およびobjディレクトリを削除します。VisualStudioでプロジェクトをビルドした後。


私は自分のプロジェクトのバージョンを何度も切り替えていますが、いくつかは異なるフレームワークを対象としています。これにより、「System.Core」参照エラーが処理されました。チェックアウトの間にVS環境をクリーンアップする必要がある場合があることを簡単に思い出させてくれてありがとう。
Suncat2000

0

これは私の見解の1つで起こりました-他のすべては大丈夫でした。私は次のことをしました:

  • 新しいビューを作成する
  • 古いビューから新しいビューにコンテンツをコピーして貼り付けます
  • 古いものを削除しました
  • 新しいものの名前を古いものに変更しました

0

VisualStudioを再起動するとうまくいきました。


これは、一見無害に見えるNuGetの更新後に発生しました。それはjQueryやブートストラップのような単なるライブラリでした。更新後、このエラーメッセージが表示され、VisualStudioを再起動すると修正されました。
Steve Hiner 2016

0
  • ファイルを閉じる
  • 溶液をきれいにする
  • ソリューションを構築する
  • ファイルを再度開く

0

追加してみてください

using system.Linq.Expressions;


4
このコードスニペットは問題を解決する可能性がありますが、説明を含めると投稿の品質が向上します。あなたは将来読者のために質問に答えていることを忘れないでください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。
ファーキー2017年

0

私もこの問題を抱えていました。 web.configファイルでに変更targetFramework="4.5.2"するtargetFramwork="4.5"と解決しました。


0

これを1つまたは2つのCSHTMLファイルで取得した場合は、破損したファイルです。

いくつかの隠されたUnicode文字を含む破損したファイルでこれが発生しました。ドキュメントのすべてのテキストを新しいメモ帳インスタンスにコピーしてみてください。元のファイルの内容をクリアして保存します...ファイルの長さが0より大きい場合は、問題があります。

ファイルを削除し、メモ帳インスタンスを古いバージョンの上に保存します。すべてのエラーは私のために消えました。

私のソリューションでは、これが数回発生しました。何が原因かはわかりませんが、メモリの巨大な塊を深淵に飲み込み始めたときに、Resharperが台無しになっているのではないかと思います。

Resharperとの愛/憎しみの関係を持っているのは私だけですか?


0

これは、ソリューションに複数のプロジェクトがあり、すべてが同じバージョンの.NETFrameworkをターゲットにしていない場合に発生する可能性があります。たとえば、Webアプリプロジェクトが.NET 4.5を対象としていて、.NET4.5.2を対象とするソリューション内の別のプロジェクトへのアセンブリ参照がある場合です。これを修正するには、プロジェクトを変更して、すべて同じバージョンの.NETFrameworkをターゲットにする必要があります。


0

いずれの回答も機能しない場合は、これを使用してください。私は同じ問題に直面しました!実際、migrationsフォルダーのconfiguration.csファイルが見つからないか削除されました。移行フォルダを削除し、データベースから移行テーブルも削除しました。次に、パッケージマネージャーコンソール(PM)で、次のコマンドを使用しました。

Enable-Migrations -Force
Add-Migration Initial
update-database

このプロセスでconfiguration.csファイルが再作成され、すべてが完全に機能しました。


0

プロジェクトのプロパティを確認して、ターゲットフレームワークを取得します。ターゲットフレームワークに一致させることで、プロジェクトでこの問題を解決しました。.NETフレームワーク4.6.1 MVC5.2.3が適切なソリューションでした。NuGetからMVCバージョンを入手しました。


0

私の場合、解決策はConnectionStringをWeb.Config内に移動することでした。このステートメントは、AppSettingsセクションの後にある必要があります。


0

私は上記のすべてを実行し、最終的にそれを解決するのは(MVC 5.2.4を使用する.netフレームワーク4.7.1サイトで)これをルートweb.configに追加することであることがわかりました<compilation>-

<assemblies>
  <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.