我刚刚创建了一个新的MVC4站点,按下run以查看它是否有效,然后运行命令:
Install-Package PiranhaCMS.Mvc
然后又按下了。 这会导致显示以下错误:
无法加载文件或程序集'DotNetOpenAuth.Core,Version = 4.0.0.0, Culture = neutral,PublicKeyToken = 2780ccd10d57b246'或其中一个 依赖。定位程序集的清单定义没有 匹配程序集引用。 (HRESULT异常:0x80131040)
我尝试了这个主题的所有高调解决方案,除了那些涉及删除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(就像我上面的编辑一样)。问题是,如果我可以改变它们,或者如果这会打破食人鱼......
编辑3
粘贴旧值删除了问题..我的网站现在显示安装新网站屏幕。仍然不确定这是否打破了其他任何事情。
在web.config中替换了这个内容:
<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>
还必须注释掉这一行
<!--<forms loginUrl="~/Account/Login" timeout="2880" />-->:
如果有人知道什么是实际错误,并且我的“修复”是一个很好的解决方案,那将是一个很好的答案..
答案 0 :(得分:1)
Piranha CMS本身不使用ASP.NET Identity,就像您注意到它与运行时程序集绑定有关。 NuGet 2.7有一个错误,导致在安装ASP.NET MVC包时,web.config中缺少运行时绑定。当在本地计算机(http://piranhacms.org/installing-piranha-cms-with-nuget-27)上安装了多个版本的Razor / WebPages / MVC时,这会导致应用程序崩溃。
为了解决这个问题,即为了免除太多支持,这些缺失的行被添加到Piranha NuGet包的web.config.transform中。
我的猜测是NuGet的新版本已经解决了这些问题,并且你在绑定中遇到了某种形式的冲突,所以你要用原来的方法替换修改过的行是正确的。
我将看看我是否可以在NuGet for 2.1.x上发布服务版本,并从NuGet-package中删除运行时绑定。
此致
/Håkan