.NET Analyzer:包版本与汇编版本

时间:2018-03-03 12:20:50

标签: c# .net visual-studio-2017 nuget

如下图所示,当您使用VS 2017使用Code Fix(.NET Standard)创建Analyzer类型的项目时,在项目的属性选项卡中有包版本,程序集版本和程序集文件版本。

enter image description here

这3个版本是否相关?另外,当我在项目中进行更改时,我应该如何更改版本号?例如,如果我修复了一个错误,如果我添加一个新规则等等。

1 个答案:

答案 0 :(得分:3)

  

这3个版本是否相关?另外,当我在项目中进行更改时,我应该如何更改版本号?例如,如果我修复了一个错误,如果我添加一个新规则等等。

在回答此问题之前,我们需要了解有关AssemblyVersionAssemblyFileVersion的一些信息。

  

程序集版本:这是.Net在运行时查看加载包和查找类型的版本。

     

程序集文件版本:这定义了操作系统向其他应用程序(如Windows资源管理器)报告的版本。

您可以查看Rémy van Duijkeren`s answer了解更多详情。

但是,NuGet不使用其中任何一种。它使用第三个版本控制属性:AssemblyInformationalVersion - 程序集的产品版本。

它使用此属性,因为似乎没有其他任何关心它。操作系统或.Net不使用信息版本,这意味着它可供NuGet索赔。但是这个版本控制属性已在AssemblyInfo.cs文件中删除,因为它们不适用于语义版本控制。

当您使用VS 2017进入带有代码修复(.NET标准版)的Analyzer类型的项目时,这些属性设置已移至.csproj文件中。默认情况下,它们不会显示,但您可以在项目属性“包”选项卡中从Visual Studio 2017中发现它们:

enter image description here

保存后,可以在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了解更多详细信息。

希望这有帮助。