C# 将平台更改为x64并返回任何CPU后,.NET项目未生成

C# 将平台更改为x64并返回任何CPU后,.NET项目未生成,c#,.net,visual-studio-2012,configuration,C#,.net,Visual Studio 2012,Configuration,我的.NETC#解决方案中有5个项目。在构建的平台目标中,我将每个项目平台都更改为x64(这最初是“任何CPU”),项目运行良好 然后,我在解决方案属性中使用configuration manager在解决方案属性中更改了平台(右键单击解决方案->属性) 然后我改变了,然后回到任何CPU。但我无法构建解决方案。有许多错误表示无法找到每个项目的DLL 在解决方案属性中更改平台并构建构建时,我注意到一件事,即已从bin/debug更改为bin/x64/debug(我正在调试模式下运行) Ex错误:

我的.NETC#解决方案中有5个项目。在构建的平台目标中,我将每个项目平台都更改为x64(这最初是“任何CPU”),项目运行良好

然后,我在解决方案属性中使用configuration manager在解决方案属性中更改了平台(右键单击解决方案->属性)

然后我改变了,然后回到任何CPU。但我无法构建解决方案。有许多错误表示无法找到每个项目的DLL

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

Ex错误:

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

我对如何再次成功地构建项目感到困惑。非常感谢您的帮助

也许您可以尝试先分别构建每个项目。如果未找到dll,则表示DataAccessLayer项目未成功构建。然后,如果它单独失败,您可以尝试编辑cs.proj,也许您还有剩余的选项。或者尝试向每个项目添加一条构建后指令,即在成功构建后将自己复制到调试目录中


希望它有帮助

修补解决方案的平台选择总是错误的。这是一个只对C++项目重要的设置。托管项目被编译为包含MSIL的程序集,它们可以在任何平台上运行。jitter的工作就是处理这个问题,它发生在运行时而不是构建时

<>这对C++项目很重要,因为它们在编译时编译到目标体系结构。由C++代码生成的64位DLL或EXE与32位代码非常不同,它包含非常不同的机器代码。 因此,纯托管解决方案应该只有一个平台选择。这是旧版本VS中的“AnyCPU”。在新的VS版本中也是如此。微软在VS2010上做得很糟糕,他们开始创建默认平台选择为“x86”的项目。当解决方案从旧版本的VS升级到多种平台时,会造成各种各样的痛苦

听起来您已经为自己挖了一个更深的洞,在那里程序集将构建到bin\x64\debug,但引用程序集仍然指向bin\debug。不知道您是如何做到这一点的,您必须始终在具有多个相互依赖的项目的解决方案中使用项目引用

我建议使用严重的刀耕火种来解决此问题:

  • 使用Build+Configuration Manager删除无关的平台选择,直到只剩下一个
  • 删除项目引用节点中的引用程序集,然后使用“项目+添加引用”重新添加它们,现在使用“项目”选项卡
  • 右键单击每个项目、属性、生成选项卡。每个类库项目都必须在任何CPU上设置其平台目标。只有EXE项目上的设置才重要,这是决定程序位的设置。在x86和任意CPU之间进行选择。切勿使用x64
  • 切换到发布版本并重复上一步

与给定项目的平台设置相比,在解决方案属性UI上查看错误的平台显示时,相关问题可能会导致项目无法生成

我继承了一个显示下图所示属性设置的解决方案。请注意,解决方案的“平台”设置为“活动(混合平台)”,每个项目都有一个“任意CPU”的平台。从这个角度看,所有项目都应该构建,对吗?错

当解决方案的“平台”显示更改为“任何CPU”时,可以看到并非所有项目都已在“构建”列下进行了检查。在此处选中相应的“Build”复选框使我的Build定义能够生成所需的项目


我试过了,即使是单个项目也没有建设。我很确定他们在较早的地方工作,但由于这种配置而无法工作。如果您发现x64的任何剩余痕迹,请尝试在notepad++中编辑您的cs.proj。毕竟,如果您仍然被阻止,最终的解决方案是使用正确的配置创建一个新的解决方案,并在其中粘贴所有代码。你能在记事本++中编辑你的.sln和你的DataAccessLayer.csproj并发布内容吗?好的,然后我会尽力检查所有项目的所有项目引用是否仍然完好无损。我从项目中删除了引用,并从解决方案项目中重新引用了它们,但没有成功:(@Diode,尝试自下而上构建项目:首先构建不依赖于其他项目的项目,如果构建失败,则查看失败原因。再次尝试将平台重置为x64,查看构建是否成功,并查看发生了哪些更改。我刚才也尝试过。根据依赖关系,发生了什么n我构建了该项目,但bin/debug仍然为空。这意味着该项目没有构建。哇,这是非常有用的信息。谢谢提醒。在我知道这一点后,我不会玩平台。谢谢。这解决了我遇到的问题。谢谢Hans,你救了我一天!!