我有一个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”,只能从每个单独的类库项目中更改。
所有.NET 4
将网站转换为Web应用程序不是一种选择。
谢谢,
答案 0 :(得分:6)
显然,你有一个原生的32位DLL。因此,IIS上的应用程序池必须配置为以32位模式运行.NET框架。
这可以在IIS管理器中配置。转到“应用程序池”,选择相关的应用程序池并打开“高级设置...”对话框。 32位选项靠近顶部。
答案 1 :(得分:0)
您引用的一个程序集只是x86,因此引用它的项目链必须仅为x86构建。还要确保在部署应用程序池时配置为32位。