Visual Studio NugetPackageManager 接口中的 'Version' 列有什么意义? (与 'Installed' 列不同)

What is the significance of the 'Version' column in Visual Studio NugetPackageManager interface? (as distinct from the 'Installed' column)

'Installed' 列已填充,但 'Version' 列未填充。

'Version' 列是什么意思? (与 'Installed' 列不同)

(我熟悉语义版本的概念;所以我确切地知道版本号的概念对于 nuget 包意味着什么。我在问 that column in that interface 的意思。)


留白后续问题结束.

Installed应该很容易解释,当你选择特定的NuGet包时,这个NuGet包的版本将列在Installed列中,并且只列出项目( s) 它安装了 has/have。所以如果一个项目没有安装这个NuGet包,那么它会显示空白。

通常,Version 代表相同的事物(Installed)。首先,Version 列应该只 display/list 安装的 NuGet 版本号 in/for .NET Standard、.NET Core 或 .NET 项目,对于 .NET Framework 项目它不会列出。这个 Version 将匹配在项目的项目文件(.xxproj 文件)中设置的版本,即使未安装 NuGet 包的特定版本(在 .xxproj 文件中设置)。但通常情况下,它会列出与 Installed 列相同的版本号。

例如(在 .xxproj 文件中):

<ItemGroup>
    <PackageReference Include="LochNessBuilder" Version="3.0.0-alpha" />
</ItemGroup>

很明显,Version 列列出了您正在使用(想要使用)的 NuGet 包的版本号,而 Installed 列列出了您正在使用的 NuGet 包的版本号您已经安装(或准备使用,因为可能存在已安装的同一 NuGet 包的多个版本)。

我认为这可以总结为:

  1. 如果你在项目中安装了特定版本的NuGet包,那么版本号会列在Installed栏中,如果没有则为空,并且Installed栏更可能显示你已经安装了这个版本的NuGet包。

  2. Version 列中列出的版本号与 .xxproj 文件中的 Version 属性 设置匹配,更有可能表明您正在使用此版本的 NuGet 包。

  3. 这两列通常显示一个特定项目的相同版本号。

  4. .NET Framework 项目不会在 Version 列中列出版本号。它只会列出 .NET Core、.NET Standard 和 .NET 项目。原因应该与这些基于project/project模板的框架的不同结构,以及如何install/copy/store/use NuGet包的不同机制有关。

  5. 我相信这不是很重要,除非你看到一个项目的两列不同。