首页 > 解决方案 > 同一解决方案中两个不同项目的相同 Nuget 包

问题描述

我在同一个解决方案中有两个 API 项目(一个是我的,另一个是我需要参考且不应更改的)。这两个 API 项目都添加了对NinjectandNinject.Web.Common包的引用。以下是软件包的设置方式:

Ninject.Web.Common在 Web Api A 中 -\packages\Ninject.Web.Common.3.3.2\lib\net45\Ninject.Web.Common.dll
Ninject.Web.Common在 Web Api B 中 -\packages\Ninject.Web.Common.3.2.3.0\lib\net45-full

(注意版本不同3.3.2,并且3.2.3

发生的事情是当我尝试运行我得到的解决方案时

Could not load type 'Ninject.Web.Common.OnePerRequestHttpModule' from assembly 'Ninject.Web.Common, Version=3.3.2.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7'.

在我的Web Api B项目上(注意它试图3.3.2从我的项目中引用版本Web Api A)。

如何保持两个项目相同并让它们引用各自版本的 Ninject?

标签: c#.netnugetnuget-package

解决方案


您通常只能在依赖关系图中解析给定依赖关系的一个版本(nuget restore主要用于计算给定依赖关系图中要使用的版本)。

这通常很好,但是您的问题是OnePerRequestHttpModule在 Ninject.Web.Common 的 3.2.3 和 3.3.2 版本之间删除了https://www.fuget.org/packages/Ninject.Web.Common/3.3.2/lib /netstandard2.0/diff/3.2.3/和 WebApiB 想使用它。

您在此处的选择是修改 WebApiB 使其不再使用OnePerRequestHttpModule,或者将 WebApiA 中的 Ninject.Web.Common 版本降级到 3.2.3


推荐阅读