奇怪的Microsoft.Owin DLL问题和Nuget

时间:2014-10-02 05:25:56

标签: c# asp.net asp.net-mvc

所以我在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的版本完全相同,请看以下屏幕截图:

enter image description here

左侧是我的本地副本,右侧是服务器的版本。

如果我查看ASP.NET MVC网站的参考资料,我看到Microsoft.Own位于: .. \包\ Microsoft.Owin.2.1.0 \ lib中** ** net40 \ Microsoft.Owin.dll

Copy Local设置为True,请参见屏幕截图: enter image description here

接下来我删除了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将再次开始工作,直到我当然是再次建造。

2 个答案:

答案 0 :(得分:1)

首先检查两个dll大小是否相同?如果大小不同则dll不同。

按照以下步骤操作。

  • 打开项目
  • 删除dll。
  • 立即构建项目。你会收到错误。
  • 关闭项目
  • 再次打开项目
  • 不要建立项目
  • 清洁解决方案
  • 添加dll和参考
  • 构建项目
  • 您将获得成功

答案 1 :(得分:0)

某些程序集文件可能在&#34; bin&#34;依赖于错误加载程序集的目录。所以你应该检查项目引用并清理&#34; bin&#34; 。目录