MVC4 Azure发布错误 - 无法加载文件或程序集'System.Web.Razor'

jak*_*cks 9 fusion azure asp.net-mvc-4 razor-2

该项目在本地运行良好,仅在发布时我收到以下错误:

无法加载文件或程序集"System.Web.Razor"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

花了最后几个小时谷歌搜索问题似乎是我添加到项目中的nuget包引用了剃刀1并覆盖了我的剃刀2 dll.我已经尝试将剃刀2.0.0.0 dll复制到参考而不是1但是错误仍然存​​在.这是详细的构建输出中显示冲突的地方:


"System.Web.Razor,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"和"System.Web.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"之间存在冲突.1>"System.Web.Razor,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"被选中,因为它是主要的,"System.Web.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 " 不是.1>依赖于"System.Web.Razor,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"[C:\ Program Files(x86)\ Microsoft ASP.NET\ASP.NET Web Pages\v1的引用. 0 \装配\ System.Web.Razor.dll].1> C:\ Program Files(x86)\ Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies\System.Web.Razor.dll 1>项目文件项包括导致引用"C:\ Program Files (x86)\ Microsoft ASP.NET\ASP.NET网页\ v1.0\Assemblies\System.Web.Razor.dll".1> System.Web.Razor,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL 1>依赖于"System.Web.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken =的引用" 31bf3856ad364e35"[C:\ Users\Jack\SkyDrive\LessonUp.Current\packages\RazorEngine.3.0.8\lib \net40\System.Web.Razor.dll].1> C:\ Users\Jack\SkyDrive\LessonUp.Current\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib \net40\System.Web.WebPages.Razor.dll 1>项目文件项包括哪个引起参考" C:\用户\千斤顶\ SkyDrive的\ LessonUp.Current \包\ Microsoft.AspNet.WebPages.2.0.20710.0\LIB \net40\System.Web.WebPages.Razor.dll".1> System.Web.Mvc,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL 1> Recaptcha


从那里它继续列出其他包依赖剃刀2.

我添加到项目中的包是:Recaptcha,Recaptcha.mvcModel和Postal.有谁知道我可以采取哪些步骤来解决这个问题?如果我能提供更多可能导致解决方案的信息,请告诉我.

vip*_*naz 5

确保引用了2.0 dll并复制local = true,然后尝试在web.config中添加程序集绑定重定向:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
</assemblyBinding?
Run Code Online (Sandbox Code Playgroud)


jak*_*cks 0

终于搞定了,再次从nuget下载razor2.0。似乎对 webconfig 进行了排序并修复了依赖错误。在 azure 上启动并运行并非没有任何问题。