2014-10-02 54 views
0

的net45版本,以便在几个小时前,我问这个问题上的SO:Strange Microsoft.Owin DLL issue and Nuget不能引用Microsoft.Owin NuGet包

我清理删除了一些DLL文件是在我的ASP.NET网站的bin文件夹和签入源代码管理。在此之后,我得到一个错误运行我的网站本地主机:

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项目的目录,错误是固定的。

所以我需要在

\packages\Microsoft.Owin.2.1.0\lib\net45 

到Microsoft.Owin参考目前我的项目提到的是:

\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" /> 

该文件的csproj:

<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> 

在我的web.config:

<compilation debug="true" targetFramework="4.5"> 

该项目的目标框架项目性质为4.5

我已经卸载并重新安装了Microsoft.Owin 2.1.0 Nuget包。

我甚至尝试复制net45 Microsoft.Owin.dll到该包的net40文件夹导致错误:

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) 

我使用Visual Studio 2012与工具安装Visual Studio 2013,当我打开包管理控制台,我相信这是我有的Nuget版本:包管理器控制台主机版本2.8.50313.31

如果我将net45版本复制到我的ASP.NET MVC项目的bin,我的错误是固定的

哪里是我的packages.config,Web.config文件或在的csproj参考Microsoft.Owin net40,它不存在,一切都指向了我的包,但Microsoft.Owin点到\包net45库\ Microsoft.Owin.2.1 .0 \ lib \ net40不管我做什么。

回答

0

愚蠢的问题,但你检查你的项目目标框架相匹配你下载的软件包?

+0

ASP.NET MVC项目目标框架是版本4。5,包总是下载net40和net45 dll – 2014-10-02 08:17:15

+0

而Nuget根据目标项目决定使用哪个DLL – 2014-10-02 08:31:18

+0

是的,但它发生在我身上,更新了项目目标类型(无论出于何种原因,降级或升级) nuget包应该被卸载并重新安装(不仅仅是删除dll),以便依赖管理器知道哪个版本的框架是正确的。 – dariogriffo 2014-10-02 08:42:44