Set the asterisk in project.json version numbers
Update for .NET Core RTM: Since writing this post, the tooling around project.json
has changed. The asterisk (suffix) in "version"
can now be passed to dotnet pack
on the command-line as --version-suffix
:
dotnet pack --version-suffix=beta-234
I have a feeling I’ve bothered the friendly people on Jabbr twice now about how to set a value for the *
(‘wildcard’) placeholder in DNX’s project.json
files, so here it is for next time… :-)
DNX project.json files use a version syntax that makes it easy to set a tag (e.g. the branch name) in the JSON file itself, while adding a unique numeric suffix at build time.
Here’s one in the first property below:
{
"version": "1.0.0-beta-*",
"description": "Serilog provider for Microsoft.Framework.Logging",
(I’m setting up CI for a Serilog provider for Microsoft.Framework.Logging that the ASP.NET team put together and contributed to the project.)
These work both in the package’s own version field, and in dependency versions, so multiple projects being built at the same time can depend on each other this way.
However, if you build a project versioned this way in Visual Studio, or at the command line with dnu build
you’ll get a version number like 1.0.0-beta
. That’s not what you’re after.
The key is setting the DNX_BUILD_VERSION
environment variable, e.g. to a counter supplied by your build server:
set DNX_BUILD_VERSION=%APPVEYOR_BUILD_NUMBER%
With this done you’ll get nice unique package versions like 1.0.0-beta-234
.
Thanks David Fowler and Alex Koeplinger for the pointer.