HttpClient 在多目標架構下的開發方式

HttpClient 在.Net Framework 4.5 之後就內建在 .Net Framework裡面

如果我在多目標架構下、需要使用HttpClient,該如何設計

首先我在 .NetStandard 2.0的類別庫裡面寫下一段簡單的Code,來使用HttpCLient

重建專案之後,發現以下錯誤訊息

.Net Framework 4.5 會出錯的原因是因為目前.Net Standard2.0 的組件沒有加入 System.Net 的參考

加入組件參考的方式

編輯.netStandard 2.0 類別庫的專案檔(csproj)

加上這段 ItemGroup,注意這段條件Condition裡面有寫明 

TargetFramework 是 net45

<ItemGroup Condition="'$(TargetFramework)' == 'net45'">
   <Reference Include="System.Net.Http"></Reference>
</ItemGroup>

重新編譯之後可看到 .Net Framework 4.5的錯誤已經排除了

剩下.Net Framework 4.0的錯誤

.NetFramework 4.0 沒有 System.Net.Http,

但至少必須先加入 System.Net 

在加入一個NuGet套件 => Microsoft.Net.Http

(.NetFramework 4.0 要使用到HttpClient的時候必須安裝的套件)

先打開 .NetStandard 2.0 的NuGet管理套件

搜尋之後安裝

安裝完之後,回到 .NetStandard 2.0的專案檔,會看到加入了這一段ItemGroup:Microsoft.Net.Http

但是這個套件又不需要在.NetStandard 2.0 跟.NetFramework 4.5之間安裝,

只有在.NetFramework 4.0 才需要,所以我在修改一下專案檔的內容

將 Microsoft.Net.Http 這個 PackageReference 剪下移動到net40底下,

重新編譯後、建置成功

這就是一個完整的多目標架構,而且在多目標架構下又可以正常的使用HttpClient的方法