我在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。
它应该如何运作?
答案 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 不兼容,但这需要单独解决。