我正在将现有的ASP.NET网站从32位转换为64位。我已经更改了解决方案中引用的所有项目的配置,以将其构建为64位。该项目可以通过Visual Studio毫无问题地编译和部署。
但是,我们的CI系统使用MSBuild,这就是我遇到的问题。
当ASP.NET预编译为某些被引用的项目运行时,会收到许多警告,如下所示:
警告MSB3270:处理器之间不匹配 正在构建的项目“ MSIL”的体系结构和处理器 参考架构 “ C:\ Source \ Proclaim \ branch \ Release \ ProclaimUpgrades \ Web \ PrecompiledWeb \ wwwroot \ WebRefresh \ DDI.Constants.dll”, “ AMD64”。这种不匹配可能会导致运行时失败。请考虑 通过更改项目的目标处理器体系结构 配置管理器,以便调整处理器体系结构 在您的项目和参考之间,或依赖 具有与目标匹配的处理器体系结构的引用 项目的处理器体系结构。
我还收到以下导致预编译失败的错误:
ASPNETCOMPILER:错误ASPCONFIG:无法加载文件或程序集 “ FooProcessor”或其依赖项之一。尝试加载 格式错误的程序。
由于DDI.Constants.DLL是FooProcessor的依赖项,因此看起来ERROR与不匹配的体系结构的警告有关。那么,为什么解决方案中的某些项目以AMD64的形式构建而其他项目以MSIL的形式构建? Web项目的.vbproj文件中的项目引用没有像其他非项目引用那样指定所引用项目的体系结构。
如何解决此预编译错误?