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

zvms9eto  于 2023-11-20  发布在  .NET
关注(0)|答案(3)|浏览(147)

我在我的.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

字符串
我感到困惑的是什么必须建立该项目再次成功回来。帮助是非常感谢。

gwbalxhn

gwbalxhn1#

修改解决方案的平台选择总是错误的。这是一个只对C项目有影响的设置。托管项目被编译为包含MSIL的程序集,它们在 * 任何 * 平台上运行。这是jitter的工作,它发生在运行时而不是构建时。
这对C
项目来说很重要,因为它们在构建时就被编译到目标体系结构上。从C++代码生成的64位DLL或EXE与32位DLL或EXE非常不同,它包含非常不同的机器代码。
因此,一个纯托管解决方案应该只有 * 一个 * 平台选择。在旧的VS版本中是“AnyCPU”。在新的VS版本中也是如此。微软在VS2010中开始创建默认平台选择为“x86”的项目时,他们做得很糟糕。当他们从旧版本的VS升级时,使用平台混合的解决方案会产生各种各样的痛苦。
听起来你给自己挖了一个更深的坑,程序集被构建到bin\x64\debug,但引用程序集仍然指向bin\debug。没有真实的想法你是如何做到的,你必须在一个有多个相互依赖的项目的解决方案中使用 * 项目引用 *。
我建议认真的削减和烧伤,以解决这个问题:

  • 使用Build + Configuration Manager删除无关的平台选择,直到只剩下一个。
  • 删除项目的“引用”节点中的引用程序集,然后使用“项目”+“添加引用”(现在使用“项目”选项卡)重新添加它们。
  • 右键单击每个项目,属性,生成选项卡。每个类库项目必须将其平台目标设置为AnyCPU。只有EXE项目上的设置才重要,这是决定程序位数的设置。支持AnyCPU,如果您对本机DLL有任何依赖,请在x86和x64之间选择以匹配其体系结构。
  • 切换到Release构建并重复上一步。
abithluo

abithluo2#

也许你可以尝试分别建立每个项目第一.如果dll是找不到它只是意味着数据库层项目没有建设与成功.然后,如果它单独失败,你可以尝试编辑cs.proj也许你有剩余的选项在它.或者也许尝试添加一个后构建指令到你的每个项目,说后建设与成功复制自己在调试目录.
希望它能帮助

lmyy7pcs

lmyy7pcs3#

与给定项目的平台设置相比,在解决方案属性UI上查看错误的平台显示可能会导致项目无法生成。
我继承了一个显示下图所示属性设置的解决方案。请注意,该解决方案的“Platform”设置为“Active(Mixed Platforms)”,并且每个项目都有一个“Any CPU”的Platform。从这一点来看,似乎所有项目都应该生成,对吗?错。


的数据
当解决方案的“Platform”显示更改为“Any CPU”时,可以看到并非所有项目都已在“Build”列下选中。在此处选中相应的“Build”复选框,使我的构建定义能够构建所需的项目。


相关问题