Nuget引用以奇怪的方式表现

时间:2016-06-21 09:13:39

标签: c# reference nuget

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

  1. 具有几个类的类库:其中一个类使用ADAL.NET执行身份验证,因此我引用了“Microsoft.IdentityModel.Clients.ActiveDirectory”包(v3.10)
  2. 我还有一个用作测试平台的ConsoleApplication。从这里开始,我调用类库来快速测试原型代码然后丢弃它。除了使用Console.ReadLine()和Console.WriteLine()之外,这个控制台应用程序本身只调用了1)中提到的类库。
  3. 现在,奇怪的是,如果我在控制台应用程序中没有包含对“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不直接使用该包,它只是调用类库(已经有引用并正在使用它)。

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

0 个答案:

没有答案