我尝试过为此搜索解决方案,但不确定我是否有正确的术语来搜索我需要的内容,所以我来到这里尝试解决我的问题并获得一些指导。
作为背景,我目前正在开发一个包含Xamarin PCL项目(android和iOS)的多项目.NET解决方案,以及一堆类库,控制台和GUI应用程序。
其中一个项目是一个通用的共享项目/类库,编译为DLL(让我们称之为Common.dll
),其中包含许多要在所有项目中共享的公共类/函数。例如,Enum用于在所有项目中使用的不同错误日志类型。该项目还包含对EntityFramework(v6而非核心)和DbGeography数据类型的引用。
现在我的问题是我的Xamarin.Android项目正在引用Common.dll
,因为它引用了EntityFramework,它没有在Android内部编译,因此抛出了一个错误,希望在EF中包含对System.Configuration.dll
的引用Mono没有但是EntityFramework需要它。但是,我的Android项目不会调用来自Common.dll
的任何EntityFramework函数,类或类型,因此我(错误地)认为这不是问题。
鉴于我的Common.dll
被广泛使用并且我希望保持原样,即一个点可以在所有项目中反映出更新,是否有办法不允许它递归调用项目中没有使用的依赖项?
还是有更好的方法让我的Android项目只使用Common.dll
所需的功能吗?我也不能简单地转移到EF Core,因为它没有我需要的所有EF 6功能。
希望这有点道理,我试图在下面制作图表以帮助说明。
MySolution
|
| -- Common Class Library (Common.dll) - Contains common classes + EntityFramework
|
| -- Console App
| | -- References Common.dll (uses EF + Enums)
|
| -- GUI App
| | -- References Common.dll (uses EF + Functions)
|
| -- Xamarin.Android (WILL NOT COMPILE)
| | -- References Common.dll (uses Functions & Enums only)
| | |
| | | -- Wants to reference System.Configuration for EF
答案 0 :(得分:0)
我找不到任何简单的方法,所以我的解决方案是从我的公共库中删除所有实体框架和数据库代码到一个新的/单独的库项目(DLL),只有所需的项目将引用。