为了这个问题,我有一个如下结构的项目,其中每个图层都映射到我的visual studio解决方案中的项目:
我的数据层中定义了存储库类。在BL层实例化它们后,我收到一条错误,指出缺少对实体框架程序集的引用。我添加了对我的DL中使用的相同实体框架dll的引用,它可以工作。
我的问题是:为什么BL参考DL是不够的,为什么我仍然需要添加一个"额外的"参考BL中的EF?我显然不希望在我的解决方案中控制多个EF版本。
我认为我的DL是一个" atomic"单位,其所有对象都是自包含的,无需其他任何功能。为什么然后在DL中定义的实例化类中我仍然需要添加EF引用,DL自己的EF引用是什么?
答案 0 :(得分:2)
这确实是构建引擎MSBuild的工作原理。 Visual Studio过去常常没有抱怨间接引用,只是发现它破坏了TFS构建服务器。至于为什么他们按照他们的方式建造这个,我没有答案。
我确实有一个简单的解决方法: 使用solution-level NuGet packages。您将Entity Framework包作为NuGet包添加到解决方案中,并检查应该具有此引用的所有项目。这种方式也可以防止多个不同的版本。
有关详细说明,您可以read this article。