文章目錄
ASP.NET Web API Unit Test 出現需要加入 System.Web.Http
參考錯誤
為 ASP.NET Web API 加上 unit test 時,在加入 action 實際動作後 Visual Studio 就提示需要加入 System.Web.Http
參考,仔細回想這個問題也不是第一次遇到了,只是過去都是直接手動加入 System.Web.Http
參考先解決問題為主,但因為直接加入 System.Web.Http
參考會直接相依個人電腦上的設定容易造成其他團隊成員無法取得 System.Web.Http
或是 CI server 無法順利執行測試
所以趁這個機會紀錄一下正較的做法,以供日後參考
錯誤訊息
訊息內容
Severity Code Description Project File Line Suppression State Error CS0012 The type 'ApiController' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. WebAPITestTests C:\Users\yowko\source\repos\WebAPITest\WebAPITestTests\Controllers\ValuesControllerTests.cs 23 Active
錯誤截圖
解決方式
擇一即可
直接手動加入 (直接相依特定位置,不推薦)
NuGet 安裝
System.Web.Http
NuGet 安裝
Microsoft.AspNet.WebApi.Core
(根據 Microsoft docs 上文章 - Unit Testing ASP.NET Web API 2)
心得
在 Unit Testing ASP.NET Web API 2 文章下方對於加入 Microsoft.AspNet.WebApi.Core
有許多不同意見,至於到底該不該採用這個方式相信大家都有個自看法,如果不喜歡這個方式也可以考慮只加入缺的 System.Web.Http
,但我個人是傾向使用 Microsoft.AspNet.WebApi.Core
原因是這次遇到 System.Web.Http
問題,不同情境可能會有其他參考的需要
參考資訊
文章作者 Yowko Tsai
上次更新 2021-10-14
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。