PackageReference Update 和 PackageReference Include 之间有什么区别?

Aru*_*ran 9 .net c# msbuild nuget-package

<PackageReference Update="Microsoft.NETCore.App" Version="2.1.22" />
<PackageReference Include="Platform.Core" Version="1.8.0" />
Run Code Online (Sandbox Code Playgroud)

上面两行中的“更新”和“包含”有什么区别?

can*_*on7 8

请参阅这些文档

Update当您只想修改具有相同名称的预先存在的项目的某些属性时,可以使用它

所以你可以这样做:

<PackageReference Include="Some.Package" Version="1.2.3"/>
<PackageReference Update="Some.Package" PrivateAssets="all"/>
Run Code Online (Sandbox Code Playgroud)

Update行会将PrivateAssets="all"属性添加到预先存在的Some.Package项目中,最终结果与以下内容相同:

<PackageReference Include="Some.Package" Version="1.2.3" PrivateAssets="all"/>
Run Code Online (Sandbox Code Playgroud)

如果您使用Include而不是Update,您将完全覆盖第一行,并丢失该Version="1.2.3"属性。

请注意,仅Update在没有要更新的预先存在的项目时使用似乎是无害的,但毫无意义。