首頁 >後端開發 >C++ >為什麼在將 ASP.NET MVC 應用程式從版本 4 升級到版本 5 時出現轉換錯誤?

為什麼在將 ASP.NET MVC 應用程式從版本 4 升級到版本 5 時出現轉換錯誤?

Patricia Arquette
Patricia Arquette原創
2025-01-04 03:07:42453瀏覽

Why Am I Getting a Casting Error When Upgrading My ASP.NET MVC Application from Version 4 to 5?

將ASP.NET MVC 從4 升級到5 時出現奇怪的錯誤

將ASP.NET MVC 從版本4 升級到版本5 時,可能會遇到出現的錯誤由System.Web.WebPages.Razor.Configuration.HostSection 類別的兩個不同版本之間的轉換操作產生。了解此問題的原因並確定解決方案至關重要。

錯誤原因

徹底檢查專案文件並確保所有文件都更新到 MVC 5 後,問題仍然存在。這表示問題可能不在 Visual Studio 解決方案中。

根據錯誤訊息,轉換操作失敗,因為:

  • 類型A:源自舊版的組件(System.Web.WebPages.Razor,版本=1.0.0.0),此版本存在於全域組件快取中(GAC).
  • B 類: 源自已在專案中成功引用的較新版本的程序集(System.Web.WebPages.Razor,Version=3.0.0.0)檔案。

如何找到舊的來源DLL

Visual Studio 在依賴項升級期間可能並不總是做出準確的選擇。因此,手動檢查專案文件 (.csproj) 以驗證引用至關重要。從 MVC 4 升級到 MVC 5 時,一個或多個專案檔案可能仍包含舊版本 System.Web.WebPages.Razor 的參考。

更新引用的步驟

  1. 透過在解決方案資源管理器中右鍵點選專案節點並選擇「卸載」來卸載專案專案。 ”
  2. 再次右鍵點選專案節點,然後選擇「編輯.csproj」。
  3. 在檔案中搜尋 System.Web.WebPages.Razor 的所有參考。
  4. 相應地更新版本和HintPath,如圖所示下面:

舊參考:

<Reference Include="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
    <Private>True</Private>        
    <HintPath>..\packages\Microsoft.AspNet.WebPages.1.0.20105.408\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
</Reference>

更新參考:

<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <Private>True</Private>
  <HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
</Reference>

這些步驟應該對解決方案中的所有依賴項目重複進行。 web.config 和/Views/web.config 檔案以確保它們沒有引用過時版本的組件也是有益的。在解決方案之外,可能位於引用舊版文件的第三方函式庫中。

以上是為什麼在將 ASP.NET MVC 應用程式從版本 4 升級到版本 5 時出現轉換錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn