2 回答

TA貢獻1966條經驗 獲得超4個贊
Visual Studio是一個很棒的工具,但它在升級依賴項時并不總是做出正確的選擇,也不支持MSBuild中可用的所有可能選項。每當你發現自己處于這樣的綁定時,你應該手動檢查并(如有必要)編輯你的.csproj
文件以解決它。
問題不在于您的文件存在于GAC中或NuGet尚未安裝,問題很可能是您的某個項目文件仍然引用了舊版本的System.Web.WebPages.Razor
版本1.0.0.0
,并且您需要找到所有文件引用它并相應地更改它們3.0.0.0
。
在解決方案資源管理器中右鍵單擊項目節點,然后單擊
Unload Project
。再次右鍵單擊項目節點,然后單擊
Edit <projectName>.csproj
。在文件中搜索引用
System.Web.WebPages.Razor
并更新版本和HintPath
相應的(如下所示)。確保HintPath
您使用實際指向現有文件。對解決方案中的所有相關項目(以及不屬于解決方案的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的更新版本。

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
- 2 回答
- 0 關注
- 535 瀏覽
添加回答
舉報