首页 文章

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

提问于
浏览
1

正如您在使用VS 2017创建具有代码修复(.NET标准)的Analyzer类型的项目时所示,在项目的属性选项卡中有包版本,程序集版本和程序集文件版本 .

enter image description here

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

1 回答

  • 1

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

    在回答这个问题之前,我们需要了解一些关于 AssemblyVersionAssemblyFileVersion 的信息 .

    程序集版本:这是.Net在运行时查看的用于加载程序包和查找类型的版本 . 程序集文件版本:它定义操作系统向其他应用程序(如Windows资源管理器)报告的版本 .

    您可以查看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中发现它们:

    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>
    

    在文件资源管理器属性信息选项卡中, Version is shown as "Product version", which is used by NuGet . 就像版本控制属性一样: AssemblyInformationalVersion .

    因此,如果您修复了错误或添加了新规则,则可以更改发布新软件包的软件包版本 .

    major为递增更改而递增,对于向后兼容的更改而言为minor,对于错误修复则为patch .

    至于是否需要修改程序集版本的版本号,您可以参考this document以获取更多详细信息 .

    希望这可以帮助 .

相关问题