2014-10-02 101 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