程序集加载问题“无法从程序集 ABC 加载类型 XYZ

Assembly Load issues "Could not load type XYZ from Assembly ABC

鉴于:

解决方案中项目的命名空间示例。

  1. 基础名称空间
  2. BaseNameSpace.Reports

我意识到我需要 "collapse" Reports 命名空间并将其放入基础中。我仍然希望该项目是它自己的项目。上面项目 2 的属性如下所示:

如果将这些值更改为:

在另一个项目中使用报告的任何尝试,例如

  1. BaseNameSpace.AnotherProjectRoot

发布标题中的消息。有趣的是,intellisense 找到了需要的 类,但是 运行 时间加载器没有....

同一解决方案中的多个项目不能包含相同的命名空间吗?这几乎就像加载程序在一个项目中找到了基本命名空间,但不会使用另一个项目(具有不同的名称)但使用相同的命名空间...

问题

尝试更改名称空间导致编译错误是引用错误。

解决方案

右键单击每个项目并选择“属性”。单击顶部的“应用程序”按钮并确保每个项目的目标框架相同。

症状

出现此问题时的症状是:1) Intellisense 很容易找到其他项目中的方法 2) 右键单击​​另一个项目中引用的方法并选择“转到定义”可以正常工作。 3) 编译解决方案将显示引用错误,例如在程序集中找不到名称空间 xyz。 4) 查看每个项目中的参考文献将显示黄色警告标志,即使其他参考文献是“通过解决方案”。您尝试通过重新指向解决方案中的其他项目来进行更正,但黄色标志仍然存在。

根本原因

未知,因为我们只是更改了一个项目中的名称空间名称,该项目之前有 NONE 个这样的错误。我们从未更改过 .NET 版本!