5

更新: ASP.NET/Razorエラーの原因を特定した後に質問が更新されました。

Windows Azureで実行する必要があるため(C ++ / CLIのAnyCPU設定なし)、x64としてコンパイルするように構成されたC ++/CLIプロジェクトを参照するASP.NETMVC3プロジェクトがあります。

問題は、C ++ / CLIプロジェクトのプラットフォーム設定をx64に構成し([ビルド]-> [構成マネージャー]で)、ソリューションをビルドしてからランダムビューを開くとすぐに、ASP.NETがロードしようとしているという警告が表示されることです。誤ったフォーマットアセンブリの後に、Razor構文エラーによって引き起こされた一連のエラーが続きます。

ランダムビューのスクリーンショット:
ここに画像の説明を入力してください

ログのスクリーンショット: VS2010エラーリスト

主なエラーは次のとおりです。

警告:ASP.NETランタイムエラー:ファイルまたはアセンブリ'LZGEncoder'またはその依存関係の1つを読み込めませんでした。間違った形式のプログラムを読み込もうとしました。

これが発生した場合でも、ソリューションをコンパイルして実行し、参照されているC ++ / CLIアセンブリを問題なく使用できるため、開発が妨げられることはありませんが、非常に厄介です(特に、IntelliSenseがブロックされ、Razorコードに実際のエラーがあります)。

C ++ / CLIのプラットフォームをWin32にリセットすると、すべてのエラーが消えますが、もちろん、ソリューションを実行すると、MVC3Webページで同じ誤った形式のエラーが発生します。

これはASP.NETのバグですか、それとも何かを構成するのを忘れましたか?職場と自宅(Azureの有無にかかわらず)でエラーを再現できたので、VS2010のインストールではないと思います。ありがとう。

更新:
今のところ、P / Invokeを使用してCライブラリを直接呼び出すC#ラッパーを作成しました。これはうまく機能するため、C ++ / CLIラッパーも必要ありませんが、この質問には答えられないので、ここで説明します。開いたままにします。

MVC3 / RazorまたはVS2010のバグだと思いますが、どちらも間もなく新しいバージョンがリリースされます。

4

4 に答える 4

2

何が問題を引き起こしているのかを理解しました。それは、C ++ /CLIdllがx64としてコンパイルされていたという事実でした。ASP.NETランタイムはそれを好まないようで、コードがコンパイルおよび実行されても、Win32またはAnyCPUプラットフォームでのみうまく機能します。

C ++ / CLIプロジェクトの2つのプラットフォームオプションはWin32とx64のみであり、Azureクラウドに公開される予定だったため、x64である必要がありましたが、これによりこれらのランタイムエラーが発生し、一方Win32ではAzureではまったく実行されません。

C#プロジェクトプラットフォーム設定を「AnyCPU」に設定できるため、P / Invokeを使用してCライブラリを直接呼び出すC#ラッパーを作成することになり、エラーはなくなりました。

したがって、要約すると、Razorコードを含むソリューションで任意のタイプのproject / dllを参照している場合は、x64ではなくAnyCPUまたはWin32としてコンパイルされていることを確認してください。

みんな、ありがとう!結局、ASP.NETMVC3のバグだと思います。

于 2012-07-26T11:37:07.083 に答える
0

私によると、C++ラッパーはあなたが持っているエラーを引き起こしません。

  1. スクリーンショットの下部にあいまいな参照エラーがあるのはなぜですか?MVC3とMVC4が同じマシンにインストールされていますか?
  2. 上部のエラーは、.dll参照が欠落していることが原因のようです。VisualStudioが提案している参照を追加します。

これに加えて、MVC WebプロジェクトでこのC++ラッパーへの参照を直接追加していますか?別のC#ライブラリプロジェクトを作成し、そこでこのラッパーを使用して、このdllを介して機能を公開できますか?

于 2012-06-27T14:29:53.873 に答える
0

実行時に機能する場合は、ASP.NET /WindowsAzureの問題ではないと思います。問題はVisualStudioのインストールに関連しているようです。Visual Studio、ASP.NET MVC、およびWindows Azureツールを再インストールして、正常に動作するかどうかを確認することをお勧めします。

よろしくお願いします、

明徐。

于 2012-07-03T10:13:49.460 に答える
-1

特定のプロジェクトでこれと同じ問題が発生していますが、x64としてコンパイルされたDLLはありません。この問題を回避するために私が行ってきたのは、プロジェクトをクリーンアップすることであり、それでうまくいくようです。問題が発生してからシステムで変更されたのは、Visual Studio2012RCのインストールだけだと思います。

于 2012-07-27T17:07:34.480 に答える