我有一个包含三层的解决方案:公共层、数据层和业务层
公共层定义了被其他层引用和使用的对象。数据层包含数据访问代码,业务层包含业务逻辑。每层包含多个项目。
数据层和业务层公开 WCF 服务,这些服务具有来自公共层的对象作为参数。数据层和业务层都通过项目引用直接引用公共层。
业务层通过服务引用引用数据层。服务引用设置为“在引用的程序集中重用类型”,因为在单个业务层项目中存在对数据层服务的多个引用,并且每个数据层服务都使用来自公共层的相同对象。
我正在为业务层编写单元测试,并且不断收到如下错误:Common.ClassName 类型的值无法转换为 Common.ClassName。类型不匹配可能是由于混合了文件引用和对程序集 Common 的项目引用。尝试用项目引用替换文件引用。
它不是文件参考,绝对是项目参考。看这里我看到这个项目
若要访问在另一个程序集中定义的类型,Visual Basic 编译器必须具有对该程序集的引用。这必须是一个单一的、明确的引用,不会导致项目之间的循环引用。
据我所知,我没有任何循环引用,所以还有什么其他问题可能导致此错误消息和/或如何防止浪费我这么多时间单击更新服务引用并希望这次它会起作用?
请注意,我对这个架构没有选择权,它是由我们的软件架构师强加的。
环境是带有 Visual Studio 2012 的 Windows 8。