Nuget引用以奇怪的方式表现

Tah*_*mad 7 c# reference nuget

我有一个包含2个项目的C#解决方案:

  1. 一个包含几个类的类库:其中一个类使用ADAL.NET执行身份验证,因此我引用了"Microsoft.IdentityModel.Clients.ActiveDirectory"包(v3.10)
  2. 我还有一个用作测试平台的ConsoleApplication.从这里开始,我调用类库来快速测试原型代码然后丢弃它.除了使用Console.ReadLine()和Console.WriteLine()之外,这个控制台应用程序本身只调用了1)中提到的类库.

现在,奇怪的是,如果我在控制台应用程序中没有包含对"Microsoft.IdentityModel.Clients.ActiveDirectory"的nuget引用,则会抛出错误:

[FileLoadException:无法加载文件或程序集'Microsoft.IdentityModel.Clients.ActiveDirectory,Version = 3.10.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)]

但是,当我简单地添加该引用时,一切正常.

我很困惑为什么会这样?类库已经有了对包的引用,并且类库是唯一使用该包的类,所以为什么我还要添加对控制台应用程序的引用?

有趣的是,我随后包含了一个WebApp并将所有内容发布到Azure订阅中.Web应用程序也会出现同样的问题.如果我在Web App中添加对"Microsoft.IdentityModel.Clients.ActiveDirectory"nuget包的引用,一切正常,但是如果我将其删除,则会抛出上述异常.请注意,WebApp不直接使用该包,它只是调用类库(已经有引用并正在使用它).

有人可以对这里发生的事情有所了解吗?