發現問題
在將 FineUIMvc(支援ASP.NET MVC 5.2.3)升級到 ASP.NET Core 2.0 的過程中,我們發現一個奇怪的現象:
透過專案引用 FineUICore 工程一切正常,但是將 FineUICore 編譯後,透過程式集的引用方式就會報錯:
這就很奇怪了,在折騰了好一陣之後,開始求助於網路。這一找不要緊,大把大把的抱怨撲面而來:
這篇文章提到:
翻譯:您需要將庫打包為 NuGet 包或使用專案的方式引用。技術原因是所有必需的程式集和版本都在編譯過程中得到解析, 並寫入 .deps.json 檔案。載入某個特定程式集時, 可能會失敗, 因為無法找到程式集或其依賴項 (或彼此衝突)。
這篇文章甚至懷疑微軟是否考慮支援程式集的引用方式:
問:微軟是否讓ASP.NET Core應用只支援 NuGet包引用,還是說這只是新技術的一個BUG?
答:Nuget包當然是新增引用的最好方式,因為他們可以很好與編譯釋出流程進行整合。
正如我所說的那樣,前面提到的問題的確是BUG,並且我們計劃在將來的補丁版本中對此進行修正。
部落格園的問答中也找到類似的提問:
解決方案
本著求真的態度,我找到了 .Net Core 的下載地址,居然發現昨天剛剛釋出了新版本:Core 2.0.3
下載 .Net Core 2.0.3 的 64bit SDK Installer 並安裝:
再回到之前出錯的專案,編輯 csproj 檔案:
將其 Microsoft.AspNetCore.All 的引用版本由 2.0.0 改為 2.0.3:
<ItemGroup> <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.3" /> </ItemGroup>
儲存,此時VS會自動還原 NuGet包:
執行,大功告成:
.Net Core SDK/Runtime 下載地址
https://github.com/dotnet/core/blob/master/release-notes/download-archive.md
附錄:我翻譯的 ASP.NET Core 2.0 系列文章
基礎篇
[譯]ASP.NET Core 2.0 帶初始引數的中介軟體
MVC篇