我在我的.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
字符串
我感到困惑的是什么必须建立该项目再次成功回来。帮助是非常感谢。
3条答案
按热度按时间gwbalxhn1#
修改解决方案的平台选择总是错误的。这是一个只对C项目有影响的设置。托管项目被编译为包含MSIL的程序集,它们在 * 任何 * 平台上运行。这是jitter的工作,它发生在运行时而不是构建时。
这对C项目来说很重要,因为它们在构建时就被编译到目标体系结构上。从C++代码生成的64位DLL或EXE与32位DLL或EXE非常不同,它包含非常不同的机器代码。
因此,一个纯托管解决方案应该只有 * 一个 * 平台选择。在旧的VS版本中是“AnyCPU”。在新的VS版本中也是如此。微软在VS2010中开始创建默认平台选择为“x86”的项目时,他们做得很糟糕。当他们从旧版本的VS升级时,使用平台混合的解决方案会产生各种各样的痛苦。
听起来你给自己挖了一个更深的坑,程序集被构建到bin\x64\debug,但引用程序集仍然指向bin\debug。没有真实的想法你是如何做到的,你必须在一个有多个相互依赖的项目的解决方案中使用 * 项目引用 *。
我建议认真的削减和烧伤,以解决这个问题:
abithluo2#
也许你可以尝试分别建立每个项目第一.如果dll是找不到它只是意味着数据库层项目没有建设与成功.然后,如果它单独失败,你可以尝试编辑cs.proj也许你有剩余的选项在它.或者也许尝试添加一个后构建指令到你的每个项目,说后建设与成功复制自己在调试目录.
希望它能帮助
lmyy7pcs3#
与给定项目的平台设置相比,在解决方案属性UI上查看错误的平台显示可能会导致项目无法生成。
我继承了一个显示下图所示属性设置的解决方案。请注意,该解决方案的“Platform”设置为“Active(Mixed Platforms)”,并且每个项目都有一个“Any CPU”的Platform。从这一点来看,似乎所有项目都应该生成,对吗?错。
的数据
当解决方案的“Platform”显示更改为“Any CPU”时,可以看到并非所有项目都已在“Build”列下选中。在此处选中相应的“Build”复选框,使我的构建定义能够构建所需的项目。
的