"Go To Definition" 版本号从何而来?
Where does the "Go To Definition" version number come from?
在 Visual Studio 2019 年,如果您右键单击一个符号,您可以 select “转到定义”。如果该符号未在您的代码中定义,它将尝试从 dll 生成代码。
当它生成这个文件时,它会在它的顶部放置一个 #region
注释。这是我的区域评论的示例:
#region Assembly Logging.Client, Version=6.0.1.0, Culture=neutral, PublicKeyToken=null
// C:\Users\myUserId\.nuget\packages\logging.client.0.0.43\lib\netstandard2.0\Logging.Client.dll
#endregion
关键部分是它说 Version=6.0.1.0
。我打开了 NuGet 文件,在 Logging.Client.dll 的属性上,版本显示为 7.0.0.43:
所以,我的问题是:#region
评论行中显示的版本号是从哪里提取的?
注意:我查看了这个类似的问题,但是删除现有包、重新启动 Visual Studio 和重建的步骤并没有解决我的问题:
Where does the “Go To Definition” version number come from?
它来自 VS 上的 AssemblyVerion 属性,由 nuget 作者在您的 nuget 项目中设置。
请看下面的解读
=========================================== ======================
我假设logging.client
nuget包是你自己的nuget包。(自己创建)
这是 nuget 和汇编机制的正常行为。这不是问题,包的作者就是这样定义的。
这些是有道理的,是作者在创建nuget包的时候定义的,作者可以修改。只是它们的处理功能不同而已与nuget的机制。
Version=6.0.1.0
是框架使用的dll的汇编版本。它是一个 built-in 版本号,在构建期间使用或在运行时使用。只能被vs内部访问。 准确地说,这是它的真实版本号。
而File Version 7.0.0.43
是dll的版本,用于外显,可以被外部访问。
而Product Version 7.0.0.43
表示也可以在VS外访问的nuget包版本。
所以,都是作者自己定义的。
他们都有VS专业术语:
AssemblyVersion 表示 6.0.1.0
,AssemblyFileVersion 表示 File Version 7.0.0.43
,NugetVersion 表示 Product Version 7.0.0.43
。而且它们也可以在 VS 之外访问。
=========================================== =======
在我这边,我创建了一个名为 ClassLibrary1
.
的 net standarad
class 库项目
Right-click 在您的 net standard
class 库项目上,right-click 在您的项目上 Properties-->套餐
1)
汇编版本在Logging.Client, Version=6.0.1.0, Culture=neutral, PublicKeyToken=null
下使用。
当你在主项目上安装那个包时,在主项目上,点击 References 上的 dll,你会在下面看到内部版本 6.0.1.0
属性 Window.
并且当您在 net framework
项目中安装此包时 packages.config
,它会显示在 csproj
文件中:
<ItemGroup>
<Reference Include="ClassLibrary1, Version=6.0.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ClassLibrary1.7.0.0.43\lib\netstandard2.0\ClassLibrary1.dll</HintPath>
</Reference>
该版本由内部框架使用,在构建或运行时使用,仅在 VS 中可见。
2)
Assembly File version 是文件名,它显示在 dll 的属性上,并在 VS 外部显示为您描述的 File Version关于案例。
3)
包版本是nuget包的版本而不是程序集dll版本。它们是不同的概念。
在你身边,显示是这样的:
<ItemGroup>
<Reference Include="ClassLibrary1, Version=6.0.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ClassLibrary1.7.0.0.43\lib\netstandard2.0\ClassLibrary1.dll</HintPath>
</Reference>
并且在dll的属性中,它显示为产品版本。
总的来说,这不是问题,每个都有一个有意义的特定功能。如果你想改变这个,你应该像我上面说的那样改变你的nuget项目的Properties-->Package,修改它们一样。然后,将其重新打包为 nuget 包。
在 Visual Studio 2019 年,如果您右键单击一个符号,您可以 select “转到定义”。如果该符号未在您的代码中定义,它将尝试从 dll 生成代码。
当它生成这个文件时,它会在它的顶部放置一个 #region
注释。这是我的区域评论的示例:
#region Assembly Logging.Client, Version=6.0.1.0, Culture=neutral, PublicKeyToken=null
// C:\Users\myUserId\.nuget\packages\logging.client.0.0.43\lib\netstandard2.0\Logging.Client.dll
#endregion
关键部分是它说 Version=6.0.1.0
。我打开了 NuGet 文件,在 Logging.Client.dll 的属性上,版本显示为 7.0.0.43:
所以,我的问题是:#region
评论行中显示的版本号是从哪里提取的?
注意:我查看了这个类似的问题,但是删除现有包、重新启动 Visual Studio 和重建的步骤并没有解决我的问题:
Where does the “Go To Definition” version number come from?
它来自 VS 上的 AssemblyVerion 属性,由 nuget 作者在您的 nuget 项目中设置。
请看下面的解读
=========================================== ======================
我假设logging.client
nuget包是你自己的nuget包。(自己创建)
这是 nuget 和汇编机制的正常行为。这不是问题,包的作者就是这样定义的。
这些是有道理的,是作者在创建nuget包的时候定义的,作者可以修改。只是它们的处理功能不同而已与nuget的机制。
Version=6.0.1.0
是框架使用的dll的汇编版本。它是一个 built-in 版本号,在构建期间使用或在运行时使用。只能被vs内部访问。 准确地说,这是它的真实版本号。
而File Version 7.0.0.43
是dll的版本,用于外显,可以被外部访问。
而Product Version 7.0.0.43
表示也可以在VS外访问的nuget包版本。
所以,都是作者自己定义的。
他们都有VS专业术语:
AssemblyVersion 表示 6.0.1.0
,AssemblyFileVersion 表示 File Version 7.0.0.43
,NugetVersion 表示 Product Version 7.0.0.43
。而且它们也可以在 VS 之外访问。
=========================================== =======
在我这边,我创建了一个名为 ClassLibrary1
.
net standarad
class 库项目
Right-click 在您的 net standard
class 库项目上,right-click 在您的项目上 Properties-->套餐
1)
汇编版本在Logging.Client, Version=6.0.1.0, Culture=neutral, PublicKeyToken=null
下使用。
当你在主项目上安装那个包时,在主项目上,点击 References 上的 dll,你会在下面看到内部版本 6.0.1.0
属性 Window.
并且当您在 net framework
项目中安装此包时 packages.config
,它会显示在 csproj
文件中:
<ItemGroup>
<Reference Include="ClassLibrary1, Version=6.0.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ClassLibrary1.7.0.0.43\lib\netstandard2.0\ClassLibrary1.dll</HintPath>
</Reference>
该版本由内部框架使用,在构建或运行时使用,仅在 VS 中可见。
2)
Assembly File version 是文件名,它显示在 dll 的属性上,并在 VS 外部显示为您描述的 File Version关于案例。
3)
包版本是nuget包的版本而不是程序集dll版本。它们是不同的概念。
在你身边,显示是这样的:
<ItemGroup>
<Reference Include="ClassLibrary1, Version=6.0.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ClassLibrary1.7.0.0.43\lib\netstandard2.0\ClassLibrary1.dll</HintPath>
</Reference>
并且在dll的属性中,它显示为产品版本。
总的来说,这不是问题,每个都有一个有意义的特定功能。如果你想改变这个,你应该像我上面说的那样改变你的nuget项目的Properties-->Package,修改它们一样。然后,将其重新打包为 nuget 包。