所以我在ASP.NET MVC项目中清理了一些DLL引用,删除了bin中的DLL并更新了源代码控制以从源代码控制中删除DLL。我现在以正确的方式复制所有对bin的引用。但是当我运行localhost时,我收到错误:
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位于: .. \包\ Microsoft.Owin.2.1.0 \ lib中** ** net40 \ Microsoft.Owin.dll
Copy Local设置为True,请参见屏幕截图:
接下来我删除了Microsoft.Owin.2.1.0的引用,并尝试使用net45版本的Microsoft.Owin.dll进行读取。所以我浏览了.. \ packages \ Microsoft.Owin.2.1.0 \ lib ** net45 ** \ Microsoft.Owin.dll
但是当我去检查属性Microsoft.Owin时,在References下,路径仍然是 .. \包\ 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
要在我重建和STILL时覆盖正在复制的包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,并在bin中覆盖我的本地Microsoft.Owin.dll副本,我的ASP.NET MVC将再次开始工作,直到我当然是再次建造。
答案 0 :(得分:1)
首先检查两个dll大小是否相同?如果大小不同则dll不同。
按照以下步骤操作。
答案 1 :(得分:0)
某些程序集文件可能在&#34; bin&#34;依赖于错误加载程序集的目录。所以你应该检查项目引用并清理&#34; bin&#34; 。目录