packagereference 里面的资产是怎么回事?
Posted nobel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了packagereference 里面的资产是怎么回事?相关的知识,希望对你有一定的参考价值。
<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>
以上是关于packagereference 里面的资产是怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章
Nuget:将多个大型解决方案迁移到PackageReference
是否可以将 OctoPack 与新的 PackageReference NuGet 格式一起使用?
从 packages.config 迁移到 PackageReferences 导致无法加载文件或程序集“...”或其依赖项之一。访问被拒绝