web-dev-qa-db-ja.com

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

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でやった

73
mansoor

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

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

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

37
Prashant2008

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

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

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"/>

これが役立つことを願っています。

46
ctm1988

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

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

[root] /Web.config:

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

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

Project Properties

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

[views folder] /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

36
Tom Bowers
  • Cshtmlファイルを閉じます
  • 再構築ソリューション
  • Cshtmlファイルを開く
  • まだエラーですか? Visual Studioを再起動します
  • まだエラーですか? ctm1988の回答を使用
18
CularBytes

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

<Reference Include="System.Core" />

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

15
leyla azari

私はちょうどまったく同じ問題を抱えていましたが、どのソリューションも問題を解決しませんでした。これをweb.config内のSystem.Webに追加する必要がありました

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

configの一部を変更するときに削除しました。

6
jsanman

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

4
Robo Burned

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

4
Neshta

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

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

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

2
Angel_D

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

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

2
Kevin R.

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

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

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

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

1
Aggromonster

注:web.configにSystem.Coreアセンブリを追加しても、MVCバージョンのダウングレードも行われませんでした。参照を右クリックしてSystem.Coreを手動で追加しようとすると、例外が発生しました。

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

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

大規模なエンタープライズプロジェクト用のほとんどすべての.cshtmlファイルは、@ Htmlヘルパーと私の剣道グリッドでエラーを投げていました。コードを徹底的にチェックしましたが、間違いはありませんでした。これが私にとって最終的に解決したものです:

Slnのクリーニング、binの削除、obj、再構築、VSの再起動などの後、システムディレクトリフォルダーにbinフォルダーを作成しました。手動でSystem.Core.dllファイルをビンに追加しました。プロジェクトを再起動してビルドすると、機能しました。

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

1
pkucas

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

TargetFramework = "4.6.1"を使用しますが、異なる場合は使用するバージョンに変更します。

<system.web>
   <compilation debug="true" targetFramework="4.6.1" />
   <httpRuntime targetFramework="4.6.1" />
</system.web>
1
Njål Eide

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

1

追加してみてください

using system.Linq.Expressions;

0
user1223339

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

0

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

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

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

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

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

0
user910531

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

0
Mangesh Kadam

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

  • 新しいビューを作成する
  • 古いビューから新しいビューに内容をコピーして貼り付けます
  • 古いものを削除しました
  • 新しい名前を古い名前に変更しました
0
Liam
  • ファイルを閉じます
  • ソリューションをきれいにする
  • ソリューションを構築する
  • ファイルを再度開く
0
Jeph

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

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

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

0
Shah Aadil

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

0
Rogerio Picilli

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

0

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

0
maryam b