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

Nuget Pack为我的项目获取了错误的依赖项,nuget,Nuget,我在VisualStudio中有一个项目,我已经为构建设置为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" targetFramewor

我在VisualStudio中有一个项目,我已经为构建设置为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 studio中,如packages.config中所示,我引用了Microsoft.Owin.Security.OAuth 2.1.0,而Microsoft.AspNet.Identity.Owin的依赖项设置为>2.0.0,因此我想知道为什么我的包依赖项会忽略Microsoft.Owin.Security.OAuth

<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>
这导致我的部署失败,因为它获取oauth的2.0,而不是我的包所依赖的2.1


这就是它应该如何工作的吗?

Visual Studio已根据其提供的信息满足了包依赖关系,如您所见,选择了2.0.0版。通过使用packages.config中的allowedVersions属性(在本例中为

<package id="Microsoft.Owin.Security.OAuth" version="2.1.0" allowedVersions="[2.1,3)" targetFramework="net45" />
它指定至少使用Microsoft.Owin.Security.OAuth的2.1.0版,也可能使用2.2.x和2.9.y版,但不使用3.0版


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

Ye,我手动向我的package.config中添加了更多信息,并添加了程序集绑定,一切正常。