發生的原由
專案是從 Git 儲存庫複製下來的,依照原開發者的專案設置,在載下來之後,重新建置方案會把相關的 packages 從 NuGet 下載回來,通常建置過也不會有什麼大問題,但是就遇到了找不到參考元件的錯誤
遇到的問題
專案是以三層式架構來撰寫
其中在 MVC 的網站專案出現:找不到參考的元件 System.Web.Http
而某一個 Library 專案出現:找不到參考的元件 System.Web.Mvc
錯誤顯示如下:
在專案會看到參考出現驚嘆號
看起來版本好像也不在我的開發本機裡
解決方法
先關閉 Visual Studio, 用文字編輯器開啟並修改專案 xxx.csproj 檔案
比對了一下 Web 專案及 Library 專案,先解掉 System.Web.Mvc 參考找不到的問題,把它的 HintPath 指向 packages 的位置即可
原始:
<Reference Include="System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
修改後:
<Reference Include="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Private>True</Private> <HintPath>..\..\packages\Microsoft.AspNet.Mvc.5.2.4\lib\net45\System.Web.Mvc.dll</HintPath> </Reference>
另外在 Web 專案找不到 System.Web.Http 的問題,有可能是在專案開發過程中,把前後端合併成一個單一網站系統時,少了某些動作而沒有正確的參考,編譯只會出現 Warning,還不影響,但是有警示就會想把它給解決了
最簡單的方法,是去 NuGet 下載 System.Web.Http 即可,不過我去找其他 Web 專案發現它是屬於 WebApi 會用到的元件,那麼直接安裝 Microsoft.AspNet.WebApi.Core 即可修正此問題
結論
以後看到找不到參考,一種是把需要的 *.dll 檔案直接複製到專案中的 bin 資料夾裡
但是多人開發時,最好還是指向正確的參考路徑
再來是檢查版本,因為目前使用 Visual Studio 2017 開發,沒有以前早期的 VS 版本,預設參考路徑或版本就會有所不同
特此記錄一下,供以後翻閱!
沒有留言:
張貼留言