<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>