所以几个小时前,我在SO上问了这个问题:Strange Microsoft.Owin DLL issue and Nuget
我清理了删除了我的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" />
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">
项目属性中项目的Target框架是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 2013工具的Visual Studio 2012,当我打开包管理控制台时,我相信这是我拥有的Nuget版本:包管理器控制台主机版本2.8.50313.31
如果我将net45版本复制到我的ASP.NET MVC项目的bin中,我的错误已修复
我的packages.config,Web.config或csproj中对Microsoft.Owin net40的引用在哪里,它不存在,所有内容都指向我的软件包的net45库,但Microsoft.Owin指向\ packages \ Microsoft。 Owin.2.1.0 \ lib \ net40无论我做什么。
答案 0 :(得分:0)
愚蠢的问题,但您是否检查过您的项目目标框架是否与您下载的软件包相匹配?