网站:MSB3270:处理器架构之间存在不匹配

时间:2012-07-27 15:19:27

标签: c# asp.net .net visual-studio-2010 msbuild

我有一个Web窗体网站项目。该网站引用了4个类库项目。其中3个类库引用了第三方程序集。我为3个类库项目中的每个项目收到以下编译器错误。

  

ASPNETCOMPILER:错误ASPCONFIG:无法加载文件或程序集   'myAssembly'或其依赖项之一。试图加载一个   程序格式不正确。 [项目。       metaproj]

我在类库项目上尝试了所有可能的AnyCPU / x86 / x64组合。我无法在网站项目中更改此设置。我有第三方dll的x86和x64版本。试过两个。

  

“ClassLibrary.csproj”(默认目标)(4) - >       (ResolveAssemblyReferences目标) - >         C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1561,5       ):警告MSB3270:处理器架构之间存在不匹配       该项目正在构建“MSIL”和参考的处理器架构       “ThirdPartyDll,Version = xxx,Culture = neutral,processorArchitectu       re = x86“,”x86“。这种不匹配可能导致运行时故障。请考虑改变       通过Configurati实现项目的目标处理器架构       在Manager上,以便在项目和项目之间对齐处理器体系结构       引用,或依赖于处理器体系结构的引用       匹配项目的目标处理器体系结构。 [ClassLibrary.cspro       j]的

下面说明了解决方案配置。注意我不能在这里更改“AnyCPU”,只能从每个单独的类库项目中更改。

Solution configuration

所有.NET 4

将网站转换为Web应用程序不是一种选择。

谢谢,

2 个答案:

答案 0 :(得分:6)

显然,你有一个原生的32位DLL。因此,IIS上的应用程序池必须配置为以32位模式运行.NET框架。

这可以在IIS管理器中配置。转到“应用程序池”,选择相关的应用程序池并打开“高级设置...”对话框。 32位选项靠近顶部。

答案 1 :(得分:0)

您引用的一个程序集只是x86,因此引用它的项目链必须仅为x86构建。还要确保在部署应用程序池时配置为32位。