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

时间:2013-11-28 11:09:21

标签: c# .net visual-studio-2012 configuration

我的.net c#解决方案中有5个项目。我已经将每个项目平台更改为Build的平台目标中的x64(这最初是'任何CPU'),项目运行正常。

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

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

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

前错误:

Metadata file '[project path]\bin\Debug\Thahavuru.DataAccessLayer.dll' could not be found   

我对成功重新构建项目的原因感到困惑。非常感谢帮助。

3 个答案:

答案 0 :(得分: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。
  • 切换到发布版本并重复上一步。

答案 1 :(得分:1)

也许你可以先尝试分别建立每个项目。如果找不到dll,则只是意味着DataAccessLayer项目没有成功构建。然后,如果单独失败,你可以尝试编辑cs.proj,也许你还有剩余的选项。或者也许尝试在每个项目中添加一个post build指令,这些指令在构建成功后会自己复制到调试目录中。

希望有所帮助

答案 2 :(得分:0)

与给定项目的平台设置相比,相关问题可能导致无法通过查看解决方案属性UI上的错误平台显示来构建项目。

我继承了一个解决方案,显示了下图中显示的属性设置。请注意解决方案"平台"设置为" Active(混合平台)"并且每个项目都有一个"任何CPU"的平台。从这看起来,所有项目都应该构建,对吗?错。

enter image description here

当解决方案"平台"显示更改为"任何CPU",然后可以看出并非所有项目都已在" Build"柱。检查适当的" Build"复选框在这里启用了我的构建定义来构建所需的项目。

enter image description here