2013-02-20 10 views
11

Webアプリケーションで次のようなエラーが表示されることがあります。私たちはWindows Server 2008 R2、IIS 7.5、MVC3、.NET 4.5を実行しています。定期的にASP.NETエラーが表示されるCS0656:コンパイラに必要なメンバがありません

Compiler Error

それは同じエラーが毎回です:CS0656:このエラーが発生した場合、それはから何かを取ることができ

コンパイラに必要なメンバー「Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation」を欠落アプリケーションプールの再起動、アプリケーション自体の再インストール、修正を行います。

このエラーは、以前にソフトウェアがインストールされていたマシンと同様、まったく新しいVMイメージ(以前のソフトウェアのインストールなし)で発生します。このエラーは、アプリケーションの最初の実行時に発生する可能性があります。または、アプリケーションがIISアプリケーションプールがワーカープロセスをリサイクルするのに十分な長さになっていると考えられます。

私はこのエラーについて数多くの研究をしており、運がない複数のソリューションを試したので、これは対処するのが非常に困難になってきています。また、エラーが発生するランダムな頻度により、トラブルシューティングが非常に困難になっています。この問題の洞察、または可能な解決策に関するアイデアは非常に高く評価されます。私はこの時点で何かを試してみたいと思っています。あなたの.NET Frameworkがあるバージョンは何

+0

1)テスト用のVMの1つをデバッガに接続してクラッシュさせることはできますか? 2)DLRを使用していますか? BCLソースとドキュメントを見ると、タイプ名は動的操作に関連付けられているようです。それとも、MVCのDLRの使用ですか? –

+0

どのバージョンのMicrosoft.CSharp.dllが使用されているかを調べることができます(procexpなどのツールでパスを特定する)、.NET Reflectorなどのツールを使用して開き、BinaryOperation静的メソッドがあることを確認できますか?コンパイラがMicrosoft.CSharp.dllのより新しいバージョンを期待しています) –

+0

C#の動的言語機能を使用していますか?とにかくCLRが壊れているように見えます。 –

答えて

0

Try Forest Cheng Answer:

? ASP.NET MVC 3ランタイムコンポーネントには、.NET Frameworkバージョン4、Visual Studio 2010またはVisual Web Developer 2010 Expressが必要です。詳細はASP.NET MVC 3 Release Notesをご覧ください。

コンパイラエラーCS0656は、以下の問題が原因で発生することができます:

  1. 共通言語ランタイムのインストールが破損しています。

  2. 共通言語ランタイムにも存在する型を定義するアセンブリへの参照があります。ただし、アセンブリの型は、C#コンパイラの予想通りに定義されていません。

したがって、正しいバージョンの共通言語ランタイムを使用していることを確認してください。

3

これはよく知られています。私はcorectlyリコールした場合、私は、DLLの古いバージョンが漂った。このクラスは、いくつかの研究の後、.NET 4.0

で導入されたため、このサイトは同意しているようだbinディレクトリを削除し、再構築しなければならなかった:http://our.umbraco.org/forum/using/ui-questions/20474-Missing-compiler-required-member-MicrosoftCSharpRuntimeBinderBinderInvokeMember

0

我々これらのコンパイルエラーは、以前は.net 1以降でランダムに発生していました。これにより、一時的なasp.netフォルダの内容を削除し、ビジュアルスタジオキャッシュ内でさえもぶら下がっていた他の不正なdllを見つける必要がありました。一般的には、一時asp.netフォルダをフラッシュすることになります。

すべてのdll(binフォルダがあまりにも明白)を見つけて、dllがシャドウディレクトリから実行されていることを忘れないでください。だから、私はアセンブリファイルがロードされるデフォルトのappdomainへの接続があることを思い出します(特に長いメモリから)。なぜなら、 "同じアセンブリ"をロードして別のファイルの場所からロードする場合です。

関連する問題