60

ASP.NET MVC 4.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でやった

24 답변


30

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

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

すべてのダイアログを確認すれば準備は完了です。


  • ありがとう@ prashant2008 - mansoor
  • プロジェクトに5.2.0が必要であることにどのように気付きましたか? - Vanice
  • @Vanice私はそれが.NET Frameworkのバージョンに依存していると思う:.NET 4.5.2 - &gt; MVC 4.0.0。 .NET 4.6.0 - &gt; MVC 5.2.0。 .NET 4.6.1 - &gt; MVC 5.2.3。 (確認されていません) - JoaoRibeiro
  • 私はすべてのバージョンを試してみたが何も解決しなかった。 - Mike
  • .net 4.7を使用していますが、この厄介なエラーがまだ発生しています - Sven

38

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

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

https://stackoverflow.com/questions/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

30

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

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

[ルート] /Web.config:

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

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

Project Properties

  1. ビューで指定されたMVCアセンブリのバージョンを確認してください。 web.config(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 version


  • これは私のために働きました。どうもありがとう。 - vibs2006
  • これは私にとっても解決しましたが、直接ではありません。私は自分のbinフォルダから間違ったバージョンのファイルを削除し、nugetを使ってmvcを更新しなければなりませんでした、そしてそれは私のbinフォルダに正しいバージョンを入れて、それはうまくいきました。 nugetでアップデートしてもbinフォルダに間違ったバージョンが残っている場合は、binフォルダにある既存のバージョンを削除してください。 - Joshua K

12

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


  • 私はすべてがここで言及されていることを試みました...しかしそれでもまだうまくいっていません。 - mansoor
  • 正常に機能しているプロジェクトがあって、突然この問題に遭遇した場合は、おそらくこれで修正されます。 - Simon_Weaver

10

私はこれらのほとんどを試しました、結局私のために働いたのはプロジェクトをアンロードし、csprojファイルを編集し、そして以下を追加することでした:

<Reference Include="System.Core" />

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


  • できます!その視覚的なスタディは、System.Coreはすでに追加されていると考えていますが、実際には追加されていないようです。だからあなたはこれを手動で行う必要があります - isxaker

3

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


  • 私の場合は、VSを閉じて再起動するだけです。リシャーパーがありますが、何もする必要はありませんでした。 - JayJay

3

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

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

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


  • 任意のテクノロジ以上のタグを追加してください。タグが見つかりません - Vikrant Kashyap
  • compilation / targetFramework属性を追加してもうまくいきました。 - Tom Bowers
  • 誤ってターゲットフレームワークに2つの異なる値を追加しました。これで問題は解決しました。 - Geethanga
  • これは私にとっての問題、ハイブリッドasp.net/webformsアプリを修正しました:私は私のアプリケーションのターゲットフレームワークを4.7にアップグレードしました、まだ4.5を指しているこれら2つのweb.config設定に気付かなかった。 - Tom Regan

2

cshtmlファイルのBuild Actionが 'Content'に設定されていることを確認してください。

私はReSharperを使っていますが、何らかの理由でテンプレートを起動したときに生成されるファイルがデフォルトの 'None'になることに気付きました。


  • 良い答えではないと私は思っていました - mansoor

2

私はアセンブリが見つからないという同じ問題を抱えていました、そしてそれはVS2017ビルドがBinフォルダにそれを正しくコピーしなかったことが起こりました。これらのステップは私を助けました:

  • Webプロジェクトの「参照」ノードに移動します
  • System.Coreへの参照を検索
  • VSプロパティウィンドウを開く
  • プロパティウィンドウで、Copy Local:FalseをTrueに変更します。

このコメントから:CS0012:型 '#####任意の型#####'が参照されていないアセンブリに定義されています


  • このリンクは質問に答えるかもしれませんが、ここに答えの本質的な部分を含め、参照用のリンクを提供することをお勧めします。リンク先ページが変更されると、リンクのみの回答が無効になることがあります。 - レビューから - Steve Gomez
  • @ SteveG。ありがとう、スティーブ!編集しました。ヘイブンは以前にもコメントしていたので、SOエチケットが足りなかった... :-) - Angel D

1

私にとっては、プロジェクトメニューの下に「C#6.0 / VB 14を有効にする」というオプションがありました。このオプションを選択するとうまくいきました。以前は、この記事で提案したようにweb.configを変更し、Visual Studioを再起動するなどしてみました。


1

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


  • 私はアップグレードする必要がある12個のパッケージを持っていました、そして私が私がすべてを更新すればslnは何の問題もなく走りました。ありがとうございました。 - Jamie
  • どういたしまして。@ jlg :) - Mehmet Taha Meral

1

Web.configで私は変更する必要がありました:

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

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


0

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

  • 新しいビューを作成する
  • 古いビューから新しいビューに内容をコピーして貼り付けます
  • 古いものを削除
  • 新しいものを古いものに改名しました


0

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


  • これは、一見無実のように思われるNuGetのアップデートの後に起こりました。それはjQueryやブートストラップのような単なるライブラリでした。更新後、このエラーメッセージが表示され、Visual Studioを再起動して問題を解決しました。 - Steve Hiner

0

  • ファイルを閉じる
  • 解決をきれいにしなさい
  • ソリューションを構築する
  • ファイルを開く


0

追加してみてください

using system.Linq.Expressions;


  • このコードスニペットは問題を解決するかもしれませんが、説明を含むあなたの投稿の質を高めるのに本当に役立ちます。あなたは将来読者のための質問に答えていることを覚えておいてください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。 - Farkie

0

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


0

1つか2つのCSHTMLファイルでこれを取得するとしたら...それは破損したファイルです。

私はいくつかの隠されたUnicode文字を含む破損したファイルでこれを起こしました。 文書のすべてのテキストを新しいメモ帳のインスタンスにコピーしてみてください。 元のファイルの内容を消去して保存します。ファイル長が> 0の場合は、問題があります。

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

私はこれを私の解決策で数回起こしました。何が原因なのかわからないが、私はResharperだと思う巨大なメモリの塊を深淵に飲み込み始めたときには、めちゃくちゃになります。

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


0

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


0

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

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

このプロセスでconfiguration.csファイルが再作成され、すべてうまくいきました。


0

ターゲットフレームワークを取得するには、プロジェクトのプロパティを確認してください。私は自分のターゲットフレームワークに合わせることで私のプロジェクトでこの問題を解決しました。NETframework 4.6.1 MVC 5.2.3はaptのソリューションでした。そのMVCバージョンをNuGetから入手しました。


0

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

私はtargetFramework = "4.6.1"を使用しますが、違う場合はあなたが使用するバージョンに変更してください。

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


0

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


0

削除中[projectName] .csproj.userプロジェクトディレクトリからファイルを私のために助けた。

リンクされた質問


関連する質問

最近の質問