【问题标题】:New MVC4 solution, adding Piranha CMS, missing assembly新的 MVC4 解决方案,添加 Piranha CMS,缺少程序集
【发布时间】:2014-02-04 21:24:37
【问题描述】:

我刚刚新建了一个 MVC4 站点,按下运行查看它是否有效,然后运行命令:

安装包 PiranhaCMS.Mvc

然后再次按下运行。 这会导致显示以下错误:

无法加载文件或程序集 'DotNetOpenAuth.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246' 或其之一 依赖关系。定位程序集的清单定义不 匹配程序集引用。 (HRESULT 异常:0x80131040)

我尝试了该线程中所有高票数的解决方案,但涉及删除 OAuth 的解决方案除外(因为我想使用它)。

我试过了:

  • 删除 bin 和 obj 文件夹。
  • 使用 Install-Package Microsoft.AspNet.WebPages.OAuth 重新安装 Oauth
  • 清洁解决方案(结合其他两个选项)

仍然没有运气,有什么想法吗?

编辑 1:

我注意到安装对我的 Web.config 进行了一些关于 OpenAuth 程序集版本的更改。

原文:

  <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.Core" publicKeyToken="2780ccd10d57b246" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
  <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" /><bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /><assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" /><bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /></dependentAssembly>

我猜 Piranha 正在改变 MVC4 假设可用的内容,但不是 dll 本身??

编辑 2

看起来 Piranha 已经从几个dependentAssembly 节点中删除了 1(就像我在上面的编辑中一样)。问题是我是否可以将它们改回来,或者这是否会破坏 Piranha...

编辑 3

粘贴旧值消除了问题.. 我的网站现在显示安装新网站屏幕。仍然不确定这是否破坏了其他任何东西。

将 web.config 中的内容替换为 this:

  <runtime>
    <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>
  </runtime>

还得注释掉这一行

&lt;!--&lt;forms loginUrl="~/Account/Login" timeout="2880" /&gt;--&gt;:

如果有人知道实际出了什么问题,并且我的“修复”是一个很好的解决方案,那将是一个很好的答案..

【问题讨论】:

    标签: asp.net-mvc-4 oauth piranha-cms


    【解决方案1】:

    Piranha CMS 本身不使用 ASP.NET Identity,所以就像您注意到它与运行时程序集绑定有关。 NuGet 2.7 有一个错误,导致在安装 ASP.NET MVC 包时,运行时绑定从 web.config 中丢失。这会导致应用程序在本地计算机上安装多个版本的 Razor/WebPages/MVC (http://piranhacms.org/installing-piranha-cms-with-nuget-27) 时崩溃。

    为了解决这个问题,即让我免于过多的支持,这些缺失的行被添加到 Piranha NuGet 包的 web.config.transform 中。

    我的猜测是,NuGet 的新版本已经解决了这些问题,并且您在绑定中遇到了某种形式的冲突,因此您将修改后的行替换为原始行的方法是正确的。

    我会看看是否可以在 NuGet 上发布 2.1.x 的服务版本,并从 NuGet 包中删除运行时绑定。

    问候

    /哈坎

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 2016-02-26
      相关资源
      最近更新 更多