如下图所示,当您使用VS 2017使用Code Fix(.NET Standard)创建Analyzer类型的项目时,在项目的属性选项卡中有包版本,程序集版本和程序集文件版本。
这3个版本是否相关?另外,当我在项目中进行更改时,我应该如何更改版本号?例如,如果我修复了一个错误,如果我添加一个新规则等等。
答案 0 :(得分:3)
这3个版本是否相关?另外,当我在项目中进行更改时,我应该如何更改版本号?例如,如果我修复了一个错误,如果我添加一个新规则等等。
在回答此问题之前,我们需要了解有关AssemblyVersion
和AssemblyFileVersion
的一些信息。
程序集版本:这是.Net在运行时查看加载包和查找类型的版本。
程序集文件版本:这定义了操作系统向其他应用程序(如Windows资源管理器)报告的版本。
您可以查看Rémy van Duijkeren`s answer了解更多详情。
但是,NuGet不使用其中任何一种。它使用第三个版本控制属性:AssemblyInformationalVersion
- 程序集的产品版本。
它使用此属性,因为似乎没有其他任何关心它。操作系统或.Net不使用信息版本,这意味着它可供NuGet索赔。但是这个版本控制属性已在AssemblyInfo.cs
文件中删除,因为它们不适用于语义版本控制。
当您使用VS 2017进入带有代码修复(.NET标准版)的Analyzer类型的项目时,这些属性设置已移至.csproj文件中。默认情况下,它们不会显示,但您可以在项目属性“包”选项卡中从Visual Studio 2017中发现它们:
保存后,可以在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>
在文件资源管理器属性信息选项卡中,版本显示为“产品版本”,由NuGet 使用。就像版本控制属性一样:AssemblyInformationalVersion
。
因此,如果您修复了错误或添加了新规则,则可以更改发布新软件包的软件包版本。
major为突然变化而递增,对于更改而言则是次要的 是向后兼容和补丁修复错误。
至于是否需要修改程序集版本的版本号,您可以参考this document了解更多详细信息。
希望这有帮助。