All在項目文件裡面,這一行代表引用包,可是有三個子項目,需要說一下:IncludeAssetsExcludeAssetsPrivateAssets這三個是什麼意思?中文翻譯,Assets是資產,反正無法理解說的是什麼鬼。一開始我以為它可以定製引用庫裡面那個類,搞了好久才發覺這是一個部署選項。可以取... ...
<PackageReference Include="Newtonsoft.Json" Version="9.0.1"> <ExcludeAssets>All</ExcludeAssets> </PackageReference>
在項目文件裡面,這一行代表引用包,可是有三個子項目,需要說一下:
IncludeAssets
ExcludeAssets
PrivateAssets
這三個是什麼意思?
中文翻譯,Assets是資產,反正無法理解說的是什麼鬼。一開始我以為它可以定製引用庫裡面那個類,搞了好久才發覺這是一個部署選項。
可以取值:
compile 影響是否編譯到當前項目
runtime 影響到運行時可不可以使用
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>