3

Webアプリケーションで本当に奇妙な問題に遭遇しました。プラットフォームターゲットに「任意のCPU」とマークされたアプリケーションがありますが、IISで実行すると、次のようになります。

ファイルまたはアセンブリを読み込めませんでした'file:/// C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ root \ ea146e97 \ e5f133b2\App_Code.dsbuukid.dll'またはその依存関係の1つ。間違った形式のプログラムを読み込もうとしました。

この問題は、IISサーバーが64ビットのみである32ビットモードでコンパイルされているdllが原因であるように見えます。そのデルでcorflags.exeツールを実行し、次の情報を取得することで、これを確認しました。

Microsoft(R).NETFrameworkCorFlags変換ツール。バージョン4.0.30319.17929Copyright(c)MicrosoftCorporation。全著作権所有。

バージョン:v4.0.30319 CLRヘッダー:2.5 PE:PE32 CorFlags:0x3 ILONLY:1 32BITREQ:1 32BITPREF:0署名済み:0

32ビットアプリケーションを許可するようにワーカープロセスを設定することでこれを解決できますが、問題を修正してアプリを64ビットモードで実行できるようにしたいと思います。

一時ファイルを複数回削除し、マシンを再起動してみましたが、dllが32ビットモードでコンパイルされるたびに数百回実行されます。

誰かがこれがどのように起こっているか知っていますか?app_codeのコンパイルプロセスの責任は何ですか?

4

1 に答える 1

5

これに対する答えが見つかりました。この問題は、ビジュアル スタジオのプロファイリング ツールに起因します。彼らは、web.config のタグに次の属性を追加しました。

assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

この属性が間違って x86 にコンパイルされているようです

于 2013-03-22T02:28:58.967 に答える