3

我在 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 位。我已经通过在该戴尔上运行 corflags.exe 工具并获得以下信息来确认这一点:

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

版本:v4.0.30319 CLR 标头:2.5 PE:PE32 CorFlags:0x3 ILONLY:1 32BITREQ:1 32BITPREF:0 签名:0

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

我已经尝试多次删除我的临时文件以及重新启动机器和 iis 数百次,但每次 dll 都以 32 位模式编译。

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

4

1 回答 1

5

找到了答案。问题来自视觉工作室分析工具。他们在 web.config 的标签中添加了以下属性

assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter,Microsoft.VisualStudio.Enterprise.AspNetHelper,版本=11.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a"

看起来这个属性错误地将东西编译到 x86

于 2013-03-22T02:28:58.967 回答