web-dev-qa-db-ja.com

一時ディレクトリに自動生成された「App_Web ********。cs」ファイルが原因でビルドエラーが発生する

だから、これはしばらくの間私を悩ませてきましたが、時々私のVisual Studio 2013 ASP.NET MVC4プロジェクトでは、未使用のViewModelクラスを削除し、次のようなエラーが発生します削除したばかりのMostRecentMemberListing.cs」):

エラー9型または名前空間名 'MostRecentMemberListing'は名前空間 'MembershipCenter.ViewModels'に存在しません(アセンブリ参照がありませんか?)c:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\temp\3e932790\42b7ff67\App_Web_cvlbfbci.1.cs 29 MembershipCenter

VSの[エラーリスト]パネルでエラーをダブルクリックすると、C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\temp\3e932790\42b7ff67というパスにあるファイルが開きます。これは、クラス名が_Page_Views_Home_MostRecentMember_cshtmlのシステム生成ビューファイル(?)です。

Temporary ASP.NET Filesの下のtempフォルダーへのパスまで、その奇妙なファイル自体とそのフォルダー、およびITSフォルダーを削除しようとしました。しかし、プロジェクトを再コンパイルするたびに、それらすべてのフォルダーとファイルが直接再作成され、同じコンパイルエラーが発生します。

プロジェクトファイルの<MvcBuildViews>true</MvcBuildViews>を使用して、コンパイル中にビューを作成しています。この設定をオフにすると、ビルドと実行は問題なく実行できますが、trueに戻すと、ビルドエラーが返されます。

誰もこのエラーに遭遇したことがありますか? IISに関連していますか? IIS Expressではなく、ローカルIISを実行しています。

46
Graham

これは、ローカルまたはその他のIISとは関係ありません。あなたが見ているその長い、奇妙なファイル名は、コンパイラがそれをコンパイルするときにビューに与える名前です。説明したことはすべて、ビューの1つにコンパイルエラーがあることを示しています。 HTMLタグの不一致、不適切なモデルプロパティ呼び出しなどが考えられます。

エラーメッセージを見ると、/Views/Home/MostRecentMember.cshtml。さらに、実際には、モデル宣言のネームスペースが欠落しているか、送信しようとしているモデルの間違ったネームスペースが宣言されているようです。

奇妙な名前のファイルを削除しても、再構築するときは何もしません。おそらく別の名前で戻ってきます。

60
Tommy

今日もこれがありました。VisualStudioには、viewsフォルダー内のすべてのcshtmlファイルをコンパイルしようとするバグがあるはずです。プロジェクトの一部ではない場合でも。ソリューションエクスプローラーで[すべてのファイルを表示]をクリックし、不正なファイルを見つけて削除することをお勧めします。

10
dibs487

ほかの人のため。等号を忘れることもあります
<%ThankyouMessage%> の代わりに
<%=ThankyouMessage%>

Ref <%$、<%@、<%=、<%#...取引は何ですか?

1
hogarth45

このエラーは、ビューが見つからないモデルを使用していることを意味します。これは通常、ビューを更新せずにモデルをリファクタリング/削除するときに発生します!

影響を受けるビューのモデルへの参照を修正すると、この問題が解決するはずです。

それ以外の場合、ASP.Net一時ディレクトリをクリーンアップしてみてください:C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

1
Nitin A.

Webアプリケーションの名前空間を変更した後、同じエラーに直面しました。また、ソリューションとWebプロジェクトの名前も変更しました。たくさんのトリックとヒントを経て、最終的にこのソリューションはうまくいきました。

  1. アプリのApp_startファイルを調べて古い名前空間への参照を見つけましたが、何も見つかりませんでした
  2. 次にweb.configとGlobal.asaxを検索しましたが、成功しませんでした。
  3. 最後に、ソリューションのViewsフォルダーの下にリストされているweb.configを検索しましたが、そこに古い名前空間の参照が見つかりました。これをNewNamespaceに変更し、アプリケーションを実行しました。今回はうまくいきました。

0
vaibhav

私は同じ問題を抱えており、問題はC#の名前空間に依存していることがわかりました。ビューのファイル.cshtmlの名前空間は上位「@model IEnumerable」であり、クラスの名前空間はCamel形式「Abc.Def.Class」です。

.cshtmlの名前空間をCamel形式に変更して実行します。

0
N T