Nuget Pack正在为我的项目获取错误的依赖项

时间:2014-01-28 22:01:56

标签: nuget

我在visual studio中有一个项目,我为构建设置为true。

我的packages.config看起来像这样

<packages>
  <package id="Microsoft.AspNet.Identity.Core" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Identity.Owin" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Cookies" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Facebook" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Google" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.MicrosoftAccount" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.OAuth" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Twitter" version="2.1.0" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="5.0.8" targetFramework="net45" />
  <package id="Owin" version="1.0" targetFramework="net45" />
</packages>

但返回的nupkg最终会产生以下依赖关系。

<dependencies>
  <dependency id="Microsoft.AspNet.Identity.Owin" version="1.0.0" />
  <dependency id="Microsoft.Owin.Host.SystemWeb" version="2.1.0" />
  <dependency id="Microsoft.Owin.Security.Facebook" version="2.1.0" />
  <dependency id="Microsoft.Owin.Security.Google" version="2.1.0" />
  <dependency id="Microsoft.Owin.Security.MicrosoftAccount" version="2.1.0" />
  <dependency id="Microsoft.Owin.Security.Twitter" version="2.1.0" />
</dependencies>

在visual.config中看到的visual studio中我引用了Microsoft.Owin.Security.OAuth 2.1.0和Microsoft.AspNet.Identity.Owin将其依赖项设置为&gt; 2.0.0所以我想知道为什么我的包依赖项会忽略Microsoft.Owin.Security.OAuth。

这导致我的部署失败,因为它取出了2.0的oauth,而不是我的包所依赖的2.1。

它应该如何运作?

1 个答案:

答案 0 :(得分:0)

Visual Studio已经根据它可用的信息满足了包依赖性(如您所见,选择版本2.0.0)。您可以使用 packages.config 中的allowedVersions属性更具体地说明所需的软件包版本,在这种情况下,设置

<package id="Microsoft.Owin.Security.OAuth" version="2.1.0" allowedVersions="[2.1,3)" targetFramework="net45" />

指定至少使用版本2.1.0的 Microsoft.Owin.Security.OAuth ,但也可能使用2.2.x和2.9.y,但不是3.0

可能导致与 Microsoft.AspNet.Identity.Owin 不兼容,但这需要单独解决。

相关问题