Skip to content

Support for new csproj version properties #25

@sparerd

Description

@sparerd

Add support for managing version numbers within the new style of csproj. While it is possible to continue using the AssemblyInfo.cs file for managing version data with the newer project format, it does require setting <GenerateAssemblyInfo>false</GenerateAssemblyInfo> which has implications for other project properties.

Sample project file:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <Version>1.0.0.0</Version>
    <AssemblyFileVersion>1.0.0.0</AssemblyFileVersion>
    <AssemblyVersion>1.0.0.0</AssemblyVersion>
  </PropertyGroup>
</Project>

Specs

  1. The Version property is the default property for managing version information. By default, all other version properties take their values from this property.
    1. If no version properties are found in the file, add a Version property with the new version number. Versions begin at 1.0.0.0 for new projects.
    2. If a Version property exists in the file, update it with the new version number (regardless of the existence of other version properties).
    3. If no Version property is found, but only one AssemblyVersion or AssemblyFileVersion are found (exclusive-or), add a Version property with the new version number taken from the preexisting version field (AssemblyVersion or AssemblyFileVersion).
    4. If no Version property is found, but both AssemblyVersion and AssemblyFileVersion are found, do not add a Version property.
    5. The Version property can contain extended version data beyond the patch number (ex. 1.2.3.4-beta1). The extended version data will be treated as a version part with lower rank than the patch part and will be removed as part of any version update operation.
  2. AssemblyFileVersion
    1. If a AssemblyFileVersion property is ever found, update it with the new version number.
    2. If a AssemblyFileVersion property is not found, do not add it.
  3. AssemblyVersion
    1. If a AssemblyVersion property is ever found, update it with the new version number.
    2. If a AssemblyVersion property is not found, do not add it.

If this looks good to you, I would be willing to put in a PR. I haven't worked with F# before (I'm a C# dev), but it would be fun to give it a go.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions