Asp.net 正在32位模式下编译的App_代码,并放置在Framework64 temp中

Asp.net 正在32位模式下编译的App_代码,并放置在Framework64 temp中,asp.net,.net,iis,compilation,Asp.net,.net,Iis,Compilation,我在web应用程序中遇到了一个非常奇怪的问题。对于平台目标,我有一个标记为“任意CPU”的应用程序,但当我通过IIS运行它时,我会得到以下结果: 无法加载文件或程序集的file:///C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ASP.NET临时文件\root\ea146e97\e5f133b2\App_Code.dsbuukid.dll'或其依赖项之一。试图加载格式不正确的程序 看起来这个问题是由在32位模式下编译dll引起的,我的IIS服务

我在web应用程序中遇到了一个非常奇怪的问题。对于平台目标,我有一个标记为“任意CPU”的应用程序,但当我通过IIS运行它时,我会得到以下结果:

无法加载文件或程序集的file:///C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ASP.NET临时文件\root\ea146e97\e5f133b2\App_Code.dsbuukid.dll'或其依赖项之一。试图加载格式不正确的程序

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

Microsoft(R).NET框架转换工具。版本4.0.30319.17929 版权所有(c)微软公司。版权所有

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

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

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


有人知道这是怎么发生的吗?应用程序代码编译过程的责任是什么?

找到了答案。问题来自VisualStudio分析工具。他们向web.config中的标记添加了以下属性

assemblyPostProcessorType=“Microsoft.VisualStudio.Enterprise.Common.aspPerformanceInstrument,Microsoft.VisualStudio.Enterprise.AspNetHelper,版本=11.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a”

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