ASP.NET Web Pages 的沖突版本問題


隨着VS版本和.NET MVC版本、EF的版本的不斷更新,雖然很多功能隨着版本的提升而更完善,但對於舊版本開發的軟件就有點悲催了,或許很多開發者都遇到類似的問題!

最近有一個項目是用.NET MVC3+EXT.NET MVC開發的(當時使用本博客中Ext.Net MVC 配置(2)進行配置的),現在要移植到MVC4的環境中,就遇到了各種各樣的問題,都快奔潰了,現在就來總結下:

1、ASP.NET Web Pages版本問題

調試后瀏覽器提示: 

檢測到 ASP.NET Web Pages 的沖突版本: 指定的版本為“1.0.0.0”,而 bin 中的版本為“2.0.0.0”。要繼續操作,請刪除應用程序 bin 目錄中的文件,或者刪除 web.config 中的版本指定。

 

解決:

配置項目下的Web.config

<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

 

2、System.Web.WebPages.Razor.Configuration.HostSection版本問題

調試后瀏覽器提示:

[A]System.Web.WebPages.Razor.Configuration.HostSection 無法強制轉換為 [B]System.Web.WebPages.Razor.Configuration.HostSection。類型 A 源自“System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Web.WebPages.Razor/v4.0_1.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll”位置處)。類型 B 源自“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll”位置處)。

解決: 

配置view中的Web.config 

<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />

 

3、System.Web.WebPages.Razor.Configuration.RazorPagesSection

版本問題

調試后瀏覽器提示:

[A]System.Web.WebPages.Razor.Configuration.RazorPagesSection 無法強制轉換為 [B]System.Web.WebPages.Razor.Configuration.RazorPagesSection。類型 A 源自“System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Web.WebPages.Razor/v4.0_1.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll”位置處)。類型 B 源自“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll”位置處)。

解決:

配置view中的Web.config 

<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />

 

4、System.Web.Mvc.MvcWebRazorHostFactory

版本問題

類型為“System.Web.Mvc.MvcWebRazorHostFactory”的表達式不能用於返回類型“System.Web.WebPages.Razor.WebRazorHostFactory”

解決:

配置項目下的Web.config

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!--<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.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>
</assemblyBinding>

</runtime>

注:加上紅色這段就不會報上面的錯誤了!

轉自:

原文跳轉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM