Visual Studio 2012 で大きな問題が発生しました。ASP.Net MVC4 プロジェクトを開始するたびに、次のエラーが発生します。
Cannot convert lambda expression to type 'System.Linq.Expressions.Expression<System.Func<Carrousel.Web.ViewModels.LoginViewModel,bool>>' because it is not a delegate type
One or more types required to compile a dynamic expression cannot be found. Are you missing a reference? d:\Visual Studio\Projects\School\Carrousel v2\Carrousel.Presentation\Views\Account\Login.cshtml
The type arguments for method 'System.Web.Mvc.Html.InputExtensions.TextBoxFor<TModel,TProperty>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
これは、cshtml ファイルに ViewBag や Html フォーム ヘルパーなどの動的な式がある場合に発生します。
しばらく探していましたが、見つけた唯一の理由は、Microsoft.CSharp や System.Core が参照されていない場合でした。ただし、プロジェクトでは両方を参照しています。
この問題は、Asp.Net Mvc 4 を使用している場合にのみ発生し、Mvc 3 を使用している場合はすべて正常に動作します。このエラーは、Windows 7 と Windows 8 Enterprise の両方のバージョンで発生しました。また、パッケージ マネージャーを使用して mvc4 をアンインストールして再インストールしようとしました。