将平台更改为x64并返回到任何CPU后,.NET项目无法构建

diy*_*da_ 4 .net c# configuration visual-studio-2012

我的.net c#解决方案中有5个项目.我已将每个项目平台更改为Build的平台目标中的x64(这最初是'任何CPU')并且该项目工作正常.

然后我使用解决方案属性中的配置管理器更改了解决方案属性中的平台(右键单击解决方案 - >属性)

然后我改变了然后回到任何CPU.但我无法构建解决方案.有很多错误说无法找到每个项目的dll.

当我在解决方案属性中更改平台并构建内置时,我注意到的一件事从bin/debug更改为bin/x64/debug(我在调试模式下运行)

Ex错误:

Metadata file '[project path]\bin\Debug\Thahavuru.DataAccessLayer.dll' could not be found   
Run Code Online (Sandbox Code Playgroud)

我对成功重建项目的困惑感到困惑.非常感谢帮助.

Han*_*ant 9

修改解决方案的平台选择始终是错误的.这是一个只对C++项目有用的设置.托管项目被编译为包含MSIL的程序集,它们可以在任何平台上运行.这是抖动的工作,它在运行时发生,而不是在构建时发生.

事对C++的项目,因为它们被编译在构建时的目标架构.从C++代码生成的64位DLL或EXE与32位代码非常不同,它包含非常不同的机器代码.

因此,纯托管解决方案应该只有一个平台选择.旧的VS版本中的"AnyCPU".在新的VS版本中再次出现.当微软开始创建以"x86"作为默认平台选择的项目时,微软在VS2010上的表现非常糟糕.当他们从旧版本的VS升级时,使用具有大量混合平台的解决方案创造各种各样的痛苦.

听起来你已经挖了一个更深的洞,组件正在构建到bin\x64\debug,但参考组件仍然指向bin\debug.不知道你是如何做到这一点的,你必须始终在具有多个彼此依赖的项目的解决方案中使用项目引用.

我建议严肃的斜线和刻录来解决这个问题:

  • 使用Build + Configuration Manager删除无关的平台选择,直到您只剩下一个.
  • 删除项目的Reference节点中的引用程序集,然后使用Project选项卡重新添加Project + Add Reference.
  • 右键单击每个项目,"属性","构建"选项卡.每个类库项目必须在AnyCPU中具有其Platform Target设置.只有EXE项目的设置很重要,那就是决定程序位数的那个.在x86和AnyCPU之间进行选择.切勿使用x64.
  • 切换到发布版本并重复上一步.