C# 无法在Nuget软件包中引用Microsoft.Owin的net45版本

C# 无法在Nuget软件包中引用Microsoft.Owin的net45版本,c#,asp.net-mvc,visual-studio,visual-studio-2012,C#,Asp.net Mvc,Visual Studio,Visual Studio 2012,几个小时前,我问了这个问题: 我删除了ASP.NET网站bin文件夹中的一些DLL,并签入了源代码管理。在此之后,我在运行我的网站localhost时出错: could not load type 'Microsoft.Owin.Security.AuthenticationDescription' from assembly 'Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

几个小时前,我问了这个问题:

我删除了ASP.NET网站bin文件夹中的一些DLL,并签入了源代码管理。在此之后,我在运行我的网站localhost时出错:

could not load type 'Microsoft.Owin.Security.AuthenticationDescription' from assembly 'Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
我发现我的项目现在引用的是4.0版本的Microsoft.Owin,如果我将4.5版本的Microsoft.Owin复制到ASP.NET MVC项目的bin目录中,则错误已修复

所以我需要一个对Microsoft.Owin的引用

\packages\Microsoft.Owin.2.1.0\lib\net45
目前,我的项目参考是:

\packages\Microsoft.Owin.2.1.0\lib\net40
无论我删除对net40 Microsoft.Owin.dll的引用多少次,关闭项目,重新打开它,清理它,然后尝试添加新引用并浏览到\packages\Microsoft.Owin.2.1.0\lib\net45,我仍然会得到对net40版本的引用

我已经检查了packages.config:

  <package id="Microsoft.Owin" version="2.1.0" targetFramework="net45" />
我正在使用Visual Studio 2012并安装了Visual Studio 2013工具,当我打开包管理控制台时,我相信这是我拥有的Nuget版本:包管理器控制台主机版本2.8.50313.31

如果我将net45版本复制到我的ASP.NET MVC项目的bin中,我的错误将得到修复


在我的packages.config、Web.config或csproj中,对Microsoft.Owin net40的引用在哪里,它不在那里,我的包的所有内容都指向net45 libs,但无论我做什么,Microsoft.Owin都指向\packages\Microsoft.Owin.2.1.0\lib\net40。愚蠢的问题,但是您是否检查了您的项目目标框架是否与您下载的软件包匹配?

ASP.NET MVC项目目标框架是4.5版,软件包始终下载net40和net45 DLL,Nuget根据目标项目决定使用哪个DLL是的,但我碰巧更新了项目目标类型(无论出于何种原因,降级或升级)和nuget软件包都应该卸载并重新安装(不仅仅是删除dll),以便依赖关系管理器知道框架的哪个版本是正确的。是的,正如我在问题中提到的,我已多次卸载并重新安装了该软件包
    <Reference Include="Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll</HintPath>
</Reference>
 <compilation debug="true" targetFramework="4.5">
Could not load file or assembly 'Microsoft.Owin' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)