我的.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
我对成功重新构建项目的原因感到困惑。非常感谢帮助。
答案 0 :(得分:9)
修补解决方案的平台选择总是错误的。这是一个只对C ++项目有用的设置。托管项目被编译为包含MSIL的程序集,它们在任何平台上运行。这是抖动的工作,它在运行时发生,而不是在构建时发生。
对C ++项目很重要,因为它们在构建时被编译到目标体系结构。从C ++代码生成的64位DLL或EXE与32位非常不同,它包含非常不同的机器代码。
因此,纯托管解决方案应该只有一个平台选择。旧的VS版本中的“AnyCPU”。在新的VS版本中再次出现。当微软开始创建以“x86”作为默认平台选择的项目时,微软在VS2010上的表现非常糟糕。当他们从旧版VS升级时,使用具有大量平台组合的解决方案,创造各种各样的痛苦。
听起来你已经挖了一个更深的洞,其中程序集被构建到bin \ x64 \ debug但是引用程序集仍然指向bin \ debug。不清楚你是如何做到这一点的,你必须始终在具有多个彼此依赖的项目的解决方案中使用项目引用。
我建议使用严重的斜杠来解决此问题:
答案 1 :(得分:1)
也许你可以先尝试分别建立每个项目。如果找不到dll,则只是意味着DataAccessLayer项目没有成功构建。然后,如果单独失败,你可以尝试编辑cs.proj,也许你还有剩余的选项。或者也许尝试在每个项目中添加一个post build指令,这些指令在构建成功后会自己复制到调试目录中。
希望有所帮助
答案 2 :(得分:0)