• Stars
    star
    147
  • Rank 251,347 (Top 5 %)
  • Language
    F#
  • License
    MIT License
  • Created about 11 years ago
  • Updated almost 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A tool for maintaining .NET Assembly versions across multiple files.

ZeroToNine

A tool for maintaining .NET Assembly versions across multiple source files.

Organization

ZeroToNine consists of two .NET assemblies:

  • Zero29 is a command-line utility.
  • ZeroToNine is a library containing most of the implementation of Zero29.

While Zero29 is the raison d'รชtre for the ZeroToNine project, this organization enables other users to reuse the implementation logic without having to reference an executable assembly.

NuGet packages

Signed versions of both Zero29 and ZeroToNine are available via NuGet:

Versioning

ZeroToNine follows Semantic Versioning 2.0.0.

Command-line usage

Zero29 is a command-line utility:

Zero29 <command> [<args>]

Commands

The following commands are available:

  • Increment
  • Assign
  • List
  • Help

Increment

-i <major|minor|build|patch|revision>

Increments the specified component of each Assembly Version and Assembly File Version Attribute within all AssemblyInfo.* files beneath the current working directory.

build and patch are synonyms. The Version type refers to the third component as the build, whereas Semantic Versioning terms it patch.

Examples
Zero29 -i minor

Increments the minor versions in all AssemblyInfo.* files; e.g. from 1.0.1.0 to 1.1.0.0.

Zero29 -i patch

Increments the patch version in all AssemblyInfo.* files; e.g. from 1.0.1.0 to 1.0.2.0.

Assign

-a <version>

Assigns the specified version value to all Assembly Version and Assembly File Version attributes within all AssemblyInfo.* files beneath the current working directory.

This can be valuable in different scenarios; for example

  • To initiate a completely new code folder with a particular version. For example, by default Visual Studio assigns the version 1.0.0.0 to new C# library projects. In this case, the assign operation can be used to set all version information to a common version, e.g. 0.1.0.
  • When adding one or more new projects to a code base, the new projects may not match the existing versions in established projects. The assign operation can be used to assign all version values to the (existing) version number.
Examples
Zero29 -a 1.3.2

Assigns the version number 1.3.2 to all version attributes in all AssemblyInfo.* files.

Assign version component

-a <major|minor|build|patch|revision> <version number>

Assigns a particular version number to a specified component (major, minor, etc.) of the existing version of all Assembly Version and Assembly File Version attributes within all AssemblyInfo.* files beneath the current working directory.

This allows for explicit control over the individual parts of a version and enables scenarios whereby a development team may want explicit control over certain version parts such as major and minor, but allow a Continuous Integration (CI) server to set the build part (for example, to be able to link a deployed version of an application with the CI server build).

Examples
Zero29 -a build 10

Assigns the number 10 to the build part of all existing version attributes in all AssemblyInfo.* files.

List

-l

Lists the versions of each Assembly Version and Assembly File Version Attribute within all AssemblyInfo.* files beneath the current working directory.

Examples
Zero29 -l

Lists the version information found in the appropriate source files beneath the current working directory.

Sample output
./Foo/AssemblyInfo.fs AssemblyVersion 1.1.0.0
./Foo/AssemblyInfo.fs AssemblyFileVersion 1.1.0.0
./Bar/AssemblyInfo.cs AssemblyVersion 2.0.3.0
./Bar/AssemblyInfo.cs AssemblyFileVersion 2.0.3.0
Listing unique versions

In bash, you can pipe the output of the list operation to other bash commands in order to get a list of unique versions:

Zero29.exe -l | awk '{ print $3; }' | sort | uniq
Sample output

Given the raw output from the previous example, the output of this command would be:

1.1.0.0
2.0.3.0

Help

-h | -?

Displays the help about available commands.

Examples
Zero29 -h

More Repositories

1

Hyprlinkr

A URI building helper library for ASP.NET Web API
C#
198
star
2

ploeh.github.com

ploeh blog 'source code'
HTML
129
star
3

Booking

Demo code demonstrating how to manage a complex code base with DI, Convention over Configuration, etc.
JavaScript
127
star
4

Furl

Interact with HTTP resources using F# scripting
F#
76
star
5

Numsense

A .NET library for parsing natural-language numerals ("forty-two") to integers, and converting the other way as well
F#
62
star
6

asynchronous-injection

Sample code accompanying blog article
C#
43
star
7

CQRSonAzureDemo

Demo code accompanying the CQRS on Azure MSDN Magazine article
JavaScript
30
star
8

KataTennis

Supporting code for an article series called "Types + Properties = Software"
F#
29
star
9

UserManagement

Sample code for Humane Code episodes
C#
26
star
10

booking-web-ui

AngularJS-based UI for my Pluralsight course on Functional Architecture with F#
JavaScript
23
star
11

dependency-rejection-samples

Supporting code for an article series called From dependency injection to dependency rejection
HTML
23
star
12

advent-of-code-2017

Solutions for Advent of Code 2017
Haskell
15
star
13

ChurchEncoding

Examples of Church encodings in C#
C#
15
star
14

dependency-injection-revisited

Sample code for articles
C#
14
star
15

ExtensibilityForMasses

C#
12
star
16

BookingExercise

Start code for refactoring exercises
C#
11
star
17

RunningJournalApi

The code in this repository is sample/demo code used for Mark Seemann's presentation "REST with the ASP.NET Web API"
C#
10
star
18

loan

This is sample code accompanying my presentation "Faking Homoiconicity in C# with graphs".
C#
10
star
19

reservation-api-slice-csharp

C# demo code of a full vertical slice from HTTP to database
C#
7
star
20

picture-archivist

Example code supporting blog articles
F#
6
star
21

DiamondFsCheck

The Diamond kata done with Property-Based Testing in F#
F#
5
star
22

PureInteractionsInFSharp

Example code accompanying http://blog.ploeh.dk/2017/07/31/combining-free-monads-in-f
HTML
5
star
23

PureInteractionsInHaskell

Example code accompanying http://blog.ploeh.dk/2017/07/24/combining-free-monads-in-haskell
Haskell
5
star
24

StatePatternAndMonad

Sample code supporting a blog post about the State pattern and the State monad
C#
5
star
25

PollingConsumer

A pure Polling Consumer written in F#
HTML
4
star
26

UserProfile

Code examples for https://blog.ploeh.dk/2019/07/22/chain-of-responsibility-as-catamorphisms
PowerShell
4
star
27

EquivalenceClassesFsCheckFizzBuzz

Code from my Equivalence Classes, xUnit.net, FsCheck, Property-Based Testing presentation.
F#
4
star
28

restaurant-reservation-exercises

Exercises for programming workshop
C#
4
star
29

Hull

Graham Scan implementation in F#
F#
4
star
30

TCPStateCSharp

State pattern TCP example in C#
C#
3
star
31

ChurchEncodingCore

.NET Core port of ChurchEncoding repository
C#
3
star
32

HasProblem23

Haskell problem 23
Haskell
3
star
33

RegistrationFlow

Example code for article
F#
3
star
34

ArgsCSharp

Code repository supporting a blog post
C#
2
star
35

maitred-kata-in-fsharp-1

The Maรฎtre d' kata done in F#
F#
2
star
36

BrainfuckCSharp

Code repository supporting a blog post
C#
2
star
37

UserManagementCore

.NET Core port of UserManagement repository
C#
2
star
38

reservation-api-slice-haskell

Haskell demo code of a full vertical slice from HTTP to database
Haskell
2
star
39

RangeHaskell

A Haskell implementation of the Range kata
Haskell
2
star
40

FAlgebras

Various F-Algebras implemented in Haskell; supports article series.
Haskell
1
star
41

RangeCSharp

A C# implementation of the Range kata
C#
1
star
42

RangeFSharp

An F# implementation of the Range kata
F#
1
star