App_Code以32位模式编译并放置在Framework64 temp中

时间:2013-03-22 01:33:29

标签: asp.net .net iis compilation

我遇到了一个非常奇怪的Web应用程序问题。我有一个标记为“任何CPU”的应用程序用于平台目标,但是当我通过IIS运行它时,我得到以下内容:

无法加载文件或程序集'file:/// C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ root \ ea146e97 \ e5f133b2 \ App_Code.dsbuukid.dll'或者它的依赖关系。试图加载格式不正确的程序。

看起来这个问题是因为dll是在32位模式下编译的,我的IIS服务器只有64位。我已经通过在该dell上运行corflags.exe工具并获得以下内容来确认这一点:

Microsoft(R).NET Framework CorFlags转换工具。版本4.0.30319.17929 版权所有(c)Microsoft Corporation。保留所有权利。

版本:v4.0.30319 CLR标题:2.5 PE:PE32 CorFlags:0x3 非正式:1 32BITREQ:1 32BITPREF:0 签名:0

我可以通过将工作进程设置为允许32位应用程序来解决这个问题,但我更倾向于解决问题并允许应用程序以64位模式运行。

我尝试多次删除我的临时文件以及重新启动计算机并且iis几百次,但每次dll都是在32位模式下编译的。

有谁知道这是怎么回事?什么负责app_code编译过程?

1 个答案:

答案 0 :(得分:5)

找到答案。问题来自visual studio profiling工具。他们将以下属性添加到web.config

中的标记中

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

看起来此属性错误地将内容编译为x86