.NET 项目无法构建

问题描述 投票:0回答:3

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

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

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

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

Ex错误:

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

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

c# .net visual-studio-2012 configuration
3个回答
9
投票

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

确实对 C++ 项目很重要,因为它们在构建时被编译到目标架构。从 C++ 代码生成的 64 位 DLL 或 EXE 与 32 位的 DLL 或 EXE 非常不同,它包含非常不同的机器代码。

因此,纯托管解决方案应该只有

一个平台选择。旧VS版本中是“AnyCPU”。在新的 VS 版本中也是如此。当微软开始创建将“x86”作为默认平台选择的项目时,微软在 VS2010 上表现得很糟糕。当从旧版本的 VS 升级时,具有大量平台组合的解决方案会造成各种痛苦。

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

项目引用

我建议认真地刀耕火种来解决这个问题:

    使用“构建 + 配置管理器”删除无关的平台选择,直到只剩下一个。
  • 删除项目引用节点中的引用程序集,然后使用“项目 + 添加引用”重新添加它们,现在使用“项目”选项卡。
  • 右键单击每个项目、“属性”、“构建”选项卡。每个类库项目都必须在 AnyCPU 上有其平台目标设置。只有 EXE 项目的设置很重要,它决定了程序的位数。优先选择 AnyCPU,如果您对本机 DLL 有任何依赖,请在 x86 和 x64 之间进行选择以匹配其架构。
  • 切换到Release版本并重复上一步。

1
投票
也许您可以尝试先单独构建每个项目。如果未找到 dll,则仅意味着 DataAccessLayer 项目未成功构建。那么如果它单独失败,您可以尝试编辑 cs.proj 也许您还有剩余的选项。或者也许尝试向每个项目添加构建后指令,该指令表示构建成功后将我自己复制到调试目录中。

希望有帮助


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

我继承了一个显示属性设置的解决方案,如下图所示。请注意,解决方案的“平台”设置为“活动(混合平台)”,并且每个项目都有一个“任何 CPU”平台。由此看来,所有项目都应该构建,对吧?错了。

当解决方案的“平台”显示更改为“任何CPU”时,可以看到“构建”列下并未选中所有项目。在此处选中适当的“构建”复选框使我的构建定义能够构建所需的项目。

© www.soinside.com 2019 - 2024. All rights reserved.