Dot-Net

找不到引用的組件“System.Net.Http”

  • August 13, 2021

我在 VS2017 中創建了一個針對 .NET Framework 4.6.1 的新項目,當我向 System.Net.Http 添加 NuGet 包引用時,我收到以下警告及其所有依賴項:

The referenced component 'System.Net.Http' could not be found.

該項目(及其解決方案)編譯,但是當我執行時,我得到一個異常,因為在嘗試實例化HttpClient.

我已經確認它HintPath指向封包件夾中的正確位置,並且 DLL 在那裡,大小為 193 KB。我已經刪除了引用,並嘗試直接添加對 DLL 的引用,但沒有成功。

我還嘗試通過 Framework > Assemblies 添加對的引用,但無論我做什麼,該引用都有一個警告圖示,並且該引用的屬性如下所示:

System.Net.Http 引用屬性

我嘗試了以下方法:

  • 刪除並添加 NuGet 引用
  • 刪除引用,清除 NuGet 記憶體,然後添加回 NuGet 引用
  • Update-Package -reinstall與適當的參數一起使用
  • 將解決方案複製到另一台電腦並在那裡嘗試(結果相同)

似乎無論我嘗試什麼,我都無法獲得工作的參考。我還應該嘗試哪些其他事情?

TLDR - Service Fabric 服務不適用於對 .NET Standard 包的項目引用;相反,請為類庫使用完整的 .NET Framework。


經過幾個小時的反複試驗,我能夠確定問題不在於System.Net.Http包本身,而在於解決方案中引用了另一個項目。

如果我引用了針對 netstandard1_6 的項目,則System.Net.Http引用(包括依賴包)將不會載入或解析。一旦我刪除了項目引用,它們就可以正常載入了!最終,我將引用的項目更改為“正常”.NET Framework 項目,添加了對該版本的引用,我的所有引用都很好。

我們懷疑有幾件事,但不確定最終原因是什麼:

  • .NET Standard 的項目文件格式不同於 .NET Framework
  • Service Fabric 項目需要 x64,而 .NET Standard 項目面向任何 CPU

任何額外的解釋將不勝感激!

引用自:https://stackoverflow.com/questions/46867582