正如您在使用VS 2017创建具有代码修复(.NET标准)的Analyzer类型的项目时所示,在项目的属性选项卡中有包版本,程序集版本和程序集文件版本 .
这三个版本是否相关?另外,当我在项目中进行更改时,我应该如何更改版本号?例如,如果我修复了一个错误,如果我添加一个新规则等 .
这3个版本是否相关?另外,当我在项目中进行更改时,我应该如何更改版本号?例如,如果我修复了一个错误,如果我添加一个新规则等 .
在回答这个问题之前,我们需要了解一些关于 AssemblyVersion 和 AssemblyFileVersion 的信息 .
AssemblyVersion
AssemblyFileVersion
程序集版本:这是.Net在运行时查看的用于加载程序包和查找类型的版本 . 程序集文件版本:它定义操作系统向其他应用程序(如Windows资源管理器)报告的版本 .
您可以查看Rémy van Duijkeren`s answer以获取更多详细信息 .
However, Nuget doesn’t use either of these . 它使用第三个版本控制属性: AssemblyInformationalVersion - The Product version of the assembly.
AssemblyInformationalVersion
它使用此属性,因为似乎没有其他任何关心它 . 操作系统或.Net不使用信息版本,这意味着Nuget可以使用它 . 但是在 AssemblyInfo.cs 文件中删除了此版本控制属性,因为它们不适用于语义版本控制 .
AssemblyInfo.cs
当您使用VS 2017进入带有代码修复(.NET标准)的Analyzer类型的项目时,这些属性设置已移至.csproj文件中 . 默认情况下,它们不会显示,但您可以在项目属性“包”选项卡中从Visual Studio 2017中发现它们:
保存后,可以在 MyProject.csproj 中找到这些值:
MyProject.csproj
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net461</TargetFramework> <Version>1.2.3.4</Version> <Authors>Author 1</Authors> <Company>Company XYZ</Company> <Product>Product 2</Product> <PackageId>MyApp</PackageId> <AssemblyVersion>2.0.0.0</AssemblyVersion> <FileVersion>3.0.0.0</FileVersion> <NeutralLanguage>en</NeutralLanguage> <Description>Description here</Description> <Copyright>Copyright</Copyright> <PackageLicenseUrl>License URL</PackageLicenseUrl> <PackageProjectUrl>Project URL</PackageProjectUrl> <PackageIconUrl>Icon URL</PackageIconUrl> <RepositoryUrl>Repo URL</RepositoryUrl> <RepositoryType>Repo type</RepositoryType> <PackageTags>Tags</PackageTags> <PackageReleaseNotes>Release</PackageReleaseNotes> </PropertyGroup>
在文件资源管理器属性信息选项卡中, Version is shown as "Product version", which is used by NuGet . 就像版本控制属性一样: AssemblyInformationalVersion .
因此,如果您修复了错误或添加了新规则,则可以更改发布新软件包的软件包版本 .
major为递增更改而递增,对于向后兼容的更改而言为minor,对于错误修复则为patch .
至于是否需要修改程序集版本的版本号,您可以参考this document以获取更多详细信息 .
希望这可以帮助 .
1 回答
在回答这个问题之前,我们需要了解一些关于
AssemblyVersion
和AssemblyFileVersion
的信息 .您可以查看Rémy van Duijkeren`s answer以获取更多详细信息 .
However, Nuget doesn’t use either of these . 它使用第三个版本控制属性:
AssemblyInformationalVersion
- The Product version of the assembly.它使用此属性,因为似乎没有其他任何关心它 . 操作系统或.Net不使用信息版本,这意味着Nuget可以使用它 . 但是在
AssemblyInfo.cs
文件中删除了此版本控制属性,因为它们不适用于语义版本控制 .当您使用VS 2017进入带有代码修复(.NET标准)的Analyzer类型的项目时,这些属性设置已移至.csproj文件中 . 默认情况下,它们不会显示,但您可以在项目属性“包”选项卡中从Visual Studio 2017中发现它们:
保存后,可以在
MyProject.csproj
中找到这些值:在文件资源管理器属性信息选项卡中, Version is shown as "Product version", which is used by NuGet . 就像版本控制属性一样:
AssemblyInformationalVersion
.因此,如果您修复了错误或添加了新规则,则可以更改发布新软件包的软件包版本 .
至于是否需要修改程序集版本的版本号,您可以参考this document以获取更多详细信息 .
希望这可以帮助 .