无法从HRESULT加载文件或程序集异常:0x80131040

时间:2014-02-23 20:27:59

标签: asp.net asp.net-mvc asp.net-mvc-4 visual-studio-2012

我创建了我的第一个MVC 4项目,它在本地服务器上运行良好。但是当我将它发布到本地文件夹并将文件夹内容上传到托管服务器时。我尝试运行它,我收到此错误:

  

无法加载文件或程序集'DotNetOpenAuth.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 2780ccd10d57b246'或其依赖项之一。该系统找不到指定的文件。   有人可以帮我吗?

的Web.config:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" />
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" />
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
  </dependentAssembly>
</assemblyBinding>

P.S Web窗体中的相同项目适用于托管服务器。

8 个答案:

答案 0 :(得分:54)

终于找到了答案!! 转到参考文献 - &gt;右侧cilck导致问题的dll文件 - &gt;选择属性 - &gt;检查版本 - &gt;将属性中的版本与web配置匹配

<dependentAssembly>
    <assemblyIdentity name="YourDllFile" publicKeyToken="2780ccd10d57b246"               culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-YourDllFileVersion" newVersion="YourDllFileVersion" />
  </dependentAssembly>

答案 1 :(得分:3)

立即对我有用的是:

  • 我找到了bin文件夹(如下图所示)。

  • 为了安全起见,将所有dll移到了其他文件夹中。

  • 然后重建项目。

  • 解决了问题后,删除了旧的dll文件。

Open file location

答案 2 :(得分:2)

如果您的解决方案包含两个彼此交互且两个使用相同引用的项目,并且如果两个项目中相应引用的版本不同;然后也发生了这样的错误。继续更新所有对最新引用的引用。

答案 3 :(得分:1)

我遇到了同样的问题,NuGet 包版本与项目中引用的版本不同。我不得不更改配置中的版本以匹配项目引用中的版本。转到参考 --> 右键单击​​导致问题的 dll 文件 --> 选择属性 --> 检查版本 --> 将属性中的版本与 Web 配置相匹配。这应该可以解决问题。

答案 4 :(得分:0)

将以下dll文件添加到bin文件夹:

DotNetOpenAuth.AspNet.dll
DotNetOpenAuth.Core.dll
DotNetOpenAuth.OAuth.Consumer.dll
DotNetOpenAuth.OAuth.dll
DotNetOpenAuth.OpenId.dll
DotNetOpenAuth.OpenId.RelyingParty.dll

如果您不需要它们,请从名为“DotNetOpenAuth.Core”的配置中删除dependentAssemblies等。

答案 5 :(得分:0)

试试这个:

  • 编辑PublishProfiles文件夹中的* .pubxml文件
  • 设置DeleteExistingFiles true
  • 更新所有金块包,重建,重新发布和瞧,解决问题!

...当我遇到同样的问题时,为我工作。

答案 6 :(得分:0)

检查任何项目是否正在使用/引用具有HRESULT:0x80131040错误的项目。如果是,请检查这些项目是否引用了相似的.dll,并且版本是否相同。如果它们的版本号不同,则将导致上述错误。

答案 7 :(得分:0)

我对 itextsharp 和 itextsharp.xmlworker dll 的异常-from-hresult-0x80131040 有问题,所以我从引用中删除了这两个 dll 并直接从 nuget 包下载了新的 dll,这解决了我的问题。

也许这种方法可以帮助其他人解决问题。