[英]Strange Microsoft.Owin DLL issue and Nuget
因此,我清理了ASP.NET MVC项目中的一些DLL引用,删除了bin中的DLL,并更新了源代码管理以从源代码管理中删除DLL。 我现在以正确的方式将所有引用复制到build上的bin中。 但是当我运行本地主机时,出现错误:
Could not load type 'Microsoft.Owin.Security.AuthenticationDescription' from assembly 'Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
因此,我开始将服务器(该网站正在运行)上的DLL与本地bin目录进行比较。 如果我从服务器复制并替换Microsoft.Own并覆盖我的本地版本,则该网站将再次运行,错误消失了。
问题是DLL的版本完全相同,请参见以下屏幕截图:
左边是我的本地副本,右边是来自服务器的版本。
如果查看ASP.NET MVC网站的参考,就会发现Microsoft.Own位于:.. \\ packages \\ Microsoft.Owin.2.1.0 \\ lib ** net40 ** \\ Microsoft.Owin.dll
并且“本地复制”设置为“ True”,请参见屏幕截图:
因此,接下来我删除了Microsoft.Owin.2.1.0的引用,并尝试使用net45版本的Microsoft.Owin.dll进行读取。 所以我浏览到.. \\ packages \\ Microsoft.Owin.2.1.0 \\ lib ** net45 ** \\ Microsoft.Owin.dll
但是当我去检查Microsoft.Owin的“属性”时,在“引用”下,路径仍然是.. \\ packages \\ Microsoft.Owin.2.1.0 \\ lib ** net40 ** \\ Microsoft.Owin.dll
因此,我转到了csproj文件,并看到以下条目:
<Reference Include="Microsoft.Owin.Security, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.Owin.Security.2.1.0\lib\net45\Microsoft.Owin.Security.dll</HintPath>
</Reference>
在我的web.config中,我的targetFramework是4.5:
<compilation debug="true" targetFramework="4.5">
因此,最后,我将Microsoft.Owin.dll复制并粘贴到服务器上,该文件可用于.. \\ packages \\ Microsoft.Owin.2.1.0 \\ lib ** net40 ** \\ Microsoft.Owin.dll和.. \\ packages \\ Microsoft.Owin.2.1.0 \\ lib中** ** net45 \\ Microsoft.Owin.dll
要覆盖在我重新构建并仍然复制时要复制的程序包DLL,我会收到错误消息:
Could not load type 'Microsoft.Owin.Security.AuthenticationDescription' from assembly 'Microsoft.Owin, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
同样,如果我复制与本地副本相同版本的Microsoft.Owin.dll,并覆盖垃圾箱中的Microsoft.Owin.dll本地副本,则我的ASP.NET MVC将再次开始工作,直到我再次构建该版本当然是。
首先检查两个dll大小是否相同?如果大小不同则dll不同。
请遵循以下步骤。
“ bin”目录中可能存在某些程序集文件,该文件取决于错误加载程序集。因此,应检查项目引用并清除“ bin”目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.