packagereference 裏面的資產是怎麼回事?

<PackageReference Include="Newtonsoft.Json" Version="9.0.1">
  <ExcludeAssets>All</ExcludeAssets>
</PackageReference>


在項目文件裏面,這一行表明引用包,但是有三個子項目,須要說一下:app

IncludeAssets工具

ExcludeAssets開發工具

PrivateAssetsui

這三個是什麼意思?spa

中文翻譯,Assets是資產,反正沒法理解說的是什麼鬼。一開始我覺得它能夠定製引用庫裏面那個類,搞了很久才發覺這是一個部署選項。翻譯

能夠取值:設計

compile   影響是否編譯到當前項目code

runtime   影響到運行時可不可使用blog

contentFiles開發

build      

analyzers

native

none        無

all            所有

這個packagereference 設計得很是靈活,他並非我理解中那個單純的包管理條目,他還設計成爲編譯過程當中的各個組件提供資料的條目。若是單純的代碼包,用compile能夠編譯經過,可是不能執行,會提示缺少相關庫,若是compile和runtime一塊兒使用,就能正常編譯和運行。其餘那些顧名思意,也是爲編譯過程的各類組件服務的。有一些庫並非運行文件須要的,而只是做爲輔助開發工具使用,那麼就能夠用none。


另外,項目文件支持一個判斷條件:

Condition="'$(TargetFramework)'=='netcoreapp2.1'"

這個判斷條件能夠根據不一樣的項目類型來選擇引入相關包,很是好用。

項目文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType Condition="'$(TargetFramework)'=='netcoreapp2.1'">Exe</OutputType>
    <PackageVersion>1.0.2</PackageVersion>
    <TargetFrameworks>netstandard2.0;netcoreapp2.1</TargetFrameworks>
  </PropertyGroup>


</Project>
相關文章
相關標籤/搜索