亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

繁星coding 2019-08-23 10:18:23
將ASP.NET MVC從4升級到5的奇怪錯誤我正在將我的項目從MVC 4轉換為MVC 5(和.Net 4轉換為.Net 4.5.2,這是變化的真正驅動因素。)當我運行我的一個頁面時,我收到此錯誤(我添加了空白區域以便于閱讀)[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',位于'默認'位置'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 = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35',位于'默認'位置'C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ studentportal3g \ 2204bad2 \ aece9b3b \ assembly \ dl3 \ ad80387c \ 91adbf51_fc73d101 \ System.Web.WebPages.Razor.dll'。當我第一次看到這個時,阿易!沒那么多 :)我已經瀏覽了每個項目,并確保它的版本升級到MVC 5,其中包含3.0.0.0版本的System.Web.WebPages.Razor.dll。清理重建,仍然得到錯誤。沒問題,我會刪除緩存的臨時文件。清理重建,仍然遇到問題。我回過頭來,在每個引用它的項目的引用中手動檢查每個版本的System.Web.WebPages.Razor.dll。我檢查我的文件夾,我復制dll手動引用它們,它不存在。如果我的解決方案不包含DLL的副本或DLL的引用,我手動刪除了'C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET中的緩存文件夾文件\ studentportal3g ...舊的壞dll來自哪里?我該如何解決這個錯誤?我該如何防止它再次發生?謝謝,Eric-
查看完整描述

2 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

Visual Studio是一個很棒的工具,但它在升級依賴項時并不總是做出正確的選擇,也不支持MSBuild中可用的所有可能選項。每當你發現自己處于這樣的綁定時,你應該手動檢查并(如有必要)編輯你的.csproj文件以解決它。

問題不在于您的文件存在于GAC中或NuGet尚未安裝,問題很可能是您的某個項目文件仍然引用了舊版本的System.Web.WebPages.Razor版本1.0.0.0,并且您需要找到所有文件引用它并相應地更改它們3.0.0.0

  1. 在解決方案資源管理器中右鍵單擊項目節點,然后單擊Unload Project

  2. 再次右鍵單擊項目節點,然后單擊Edit <projectName>.csproj。

  3. 在文件中搜索引用System.Web.WebPages.Razor并更新版本和HintPath相應的(如下所示)。確保HintPath您使用實際指向現有文件。

  4. 對解決方案中的所有相關項目(以及不屬于解決方案的DLL中的任何項目)重復這些步驟。

舊參考

<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文件,以確保它們不引用此程序集的任何舊版本。

注意:如果上述說明無法解決您的問題,則問題可能不在您的解決方案范圍內。很可能是第三方庫在某處引用了舊版本的文件。如果是這樣,您可以嘗試獲取DLL的更新版本。


查看完整回答
反對 回復 2019-08-23
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

看起來舊DLL在全局程序集緩存(GAC)中。GAC是一個可以存儲可以從機器上的多個應用程序引用的程序集的地方。單擊此處以了解有關GAC的更多信息。

使用該工具gacutil更新GAC中的程序集。

該工具位于Program Files中“Microsoft SDKs”文件夾下的某個位置。對我來說,它位于

C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6.1工具\

打開cmd并導航到我存儲gacutil的地方。然后像這樣使用它:

gacutil.exe -i [path to your assebly] -f。

-i參數用于指示裝配的位置。該-f參數用于強制更新程序集(如果已經存在)。

假設您的DLL位于

C:\ TEMP \ System.Web.WebPages.Razor.dll

然后你會跑 gacutil.exe -i "C:\temp\System.Web.WebPages.Razor.dll" -f


查看完整回答
反對 回復 2019-08-23
  • 2 回答
  • 0 關注
  • 535 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號