We have moved to the realm of 2.x!!! Didn't hear any negative feedback from the beta 2.0 version that supports 2019, so we're off to the races. Note 2.x has a breaking change by removing the obsolete options (see obsolete options in documentation below).
If you still need 1.x for an older VS install (there's no shame in having two VS install versions, but don't worry, we won't tell anyone you still need VS2015 for that ONE project). (Download 1.x version here)
Automatic Versions is created and maintained by Precision Infinity.
Upcoming Planned Features:
- Time Zone Offset (Pending further analysis)
- ~~Visual Studio 2017 support~~ -- Done!
- ~~UX and Usability Improvements~~ -- Done!
- New Supported Project Types (misc) (Partially done. Package Version and Semantic Version completed, next up are manifest updates for vsix files and click once publish version. In the queue for analysis are wix, and xamarin).
- ~~Startup performance improvement using new VS2017 async capabilities (this might have to be deferred until version 2.0 where the new version will no longer support older versions of VS. For 1.x we're trying to stay backwards compatible).~~ -- Done!
(suggested amount: $40 per install instance/year)
Paid support available upon request.
Please use the Q&A tab for all bug reports. If you do have an issue, we'd love the chance to resolve it before you post a review. We want the tool to be an awesome improvement to your daily productivity and to always work as you expect.
The Automatic Versions plugin is designed to improve productivity by automatically incrementing Assembly, AssemblyFile, AssemblyInfo, ClickOnce, and package version(s) for C# and VB projects for Full .Net, .Net Standard and .Net Core.
Settings are configurable as granularly as the at the Configuration (Debug/Release) level of a Project, or more generically at the Solution level, or a global user default for all solutions. Additionally, Regular .Net projects can also have settings at the project level to apply to all configurations.
For each level that settings can be applied the following options are available:
- Inherit/Not Set - Each Version type has the option to inherit settings from a parent level, or in the case of the global defaults, Not Set, is used to tell Automatic Versions not to do anything with that version type
- Custom System.Version - Allows incrementation options for the Major.Minor.Build.Revision version format
- Custom Semantic Version (BETA/PRO) - Allows options for Major.Minor.Patch-prerelease version format (This setting is only available for AssemblyInfo (Full .Net) and Package (.Net Standard/Core).
- Assembly Version - If set, updates the AssemblyVersion attribute in the AssemblyInfo.cs./vb file. This value is used by .Net to determine which version of a library to load if strong naming is used. This version number can be referenced using the following code snippet:
var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
Console.WriteLine(version); // -> "220.127.116.11"
- Assembly File Version - If set, updates the AssemblyFileVersion attribute in the AssemblyInfo.cs/.vb file. This value is used by the operating system as the "File Version" in the details tab of the dll or exe. An example of how the file version can be used is to increment it if you apply a patch to your product where the functional underlying APIs are the same for backwards compatibility. You would leave the AssemblyVersion the same, but increment the FileVersion to know which dlls/exes had the patch and which did not. File version can be accessed from code with the following:
var assemblyLocation = System.Reflection.Assembly.GetExecutingAssembly().Location;
var fileVersion = System.Diagnostics.FileVersionInfo.GetVersionInfo(assemblyLocation).FileVersion;
Console.WriteLine(fileVersion); // -> "18.104.22.168"
- Assembly Info Version - (.Net Framework) If set, updates the AssemblyInformationalVersion attribute in the AssemblyInfo.cs/.vb file. This value is used by the operating system as the "Product version" in the details tab of the dll or exe. This version type is special because it has the option to be used for Semantic Versioning, which can be used for NuGet Publishes. Alternatively, this version attribute can have 'prefix text' that can contain your product name. To use Prefix text, set the static Prefix text in the AssemblyInfo file and Automatic Versions will ignore it and only update the version numbers. Don't use prefix text with Semantic Versioning because the Semantic Versioning specification doesn't allow it. Assembly Informational Version can be accessed with the following code:
var assemblyLocation = System.Reflection.Assembly.GetExecutingAssembly().Location;
var version = System.Diagnostics.FileVersionInfo.GetVersionInfo(assemblyLocation).ProductVersion;
Console.WriteLine(version); // -> "1.2.32-alpha-01"
Package Version (BETA/PRO) - (.Net Standard/Core) If set, updates the Package Version attribute and will automatically be used in the nuget package manifest. The only option for this is Semantic Version. The way to get this version in your project is the same as Assembly Info Version.
ClickOnce Version (BETA/PRO) - If set, updates the ClickOnce Version to match the AssemblyVersion or AssemblyFileVersion.
Custom System.Version Options
Major, Minor, Build, and Revision can be individually configured to the incrementation type desired:
In these examples, we use the date July 29th 2024, 1:30pm
- None - Do not increment this value.
- None w/AutoReset - Lets you set the value manually and will not be changed, unless a more significant number increases, in which case it will reset to 0.
- Increment (Always) - Always Increments this value by 1*
- Increment w/AutoReset - Increments this value by 1, unless a more significant number increases, in which case it will reset to 0.
- On Demand (Build New Version) - Increment this value by 1 only when a build is initiated using the Build New Version command (on the context menu of each project). You can set this value on both the Major and the Minor numbers and use the context menu (see usage below) to control which one is incremented.
- On Demand w/Reset (Obsolete) - Use Increment w/AutoReset instead. This feature may not be supported in future versions of the product. (Legacy functionality: Increment this value by 1 only when a build is initiated using the Build New Version command (on the context menu of each project). Resets all Increment sub-values.)
- Day Of Year (ddd) - Set this value to DateTime.UtcNow.DayOfYear: 211.
- Day (dd) - Set this value to the current day of the month: 29.
- Month (MM) - Set this value to the current month of the year: 7.
- Year (yyyy) - Set this value to the current year: 2024.
- Short Year (yy) - Set this value to 2 digit current year: 24.
- Date (yyddd) - Set this value to the current date (yyddd format - where ddd is the day of year)**: 24211.
- Date (MMdd) - Set this value to the current date (MMdd) where MM is a 2-digit month and dd is a 2-digit day of month: 0729.
- UTC Time (HHmm) - Set this value to the current time (HHmm format): 1330.
- Delta Days (since 1/1/2000) - Set this value to the number of days that have occurred since January 1, 2000: 8976.
- UTC Seconds Since Midnight/2 - If you are using a custom unique time based stamp for your version number, this gives you the most granularity to a single day. The number has to be divided by 2 so it doesn't overflow the max value.
*There is an exception to this rule when Increment On Demand w/Reset (Obsolete) is used it will reset this value if you choose Build New Version
**This value will overflow in 2065. Since it is very useful and there are limited alternatives that work as well as this one, we are continuing to use it and even recommend using it, however, we may change it's functionality at some point such that it does not overflow in 2065. The overflow itself is not a security issue, however. It will only cause a build error.
Custom Semantic Version (BETA/PRO)
Semantic Versioning is typically used for 'packaging' the results of a build for use in a manifest file or as a 'published package' of your product. Therefore Semantic Versioning leverages the other version attributes by letting you choose which of those you want to use for your Major/Minor numbers, and independently does it's own incrementation on the Patch and Pre-Release numbers.
- Major/Minor settings - Set to use AssemblyVersion, AssemblyFileVersion, or Set Manually. To set manually, open the AssemblyInfo file (for Full .Net) or the project properties (for .Net Standard/Core) and manually set the major and minor values.
- Patch settings - This will increment the Patch number based on the incrementation settings. Increment Once is available for when you switch to a 'pre-release' version of the product, you will typically want the Patch number to Increment Once for the start of your pre-release cycle. After incrementing once, this setting will automatically update to None (whereby Pre-Release will be doing the incrementation).
- Pre-Release (optional) - Set to alpha, beta, preview, rc, or N/A (release). If you set a pre-release, then Patch will automatically change to "increment once" for you and the prerelease will increment instead starting with alpha, then alpha-01, alpha-02, etc. When you set this to (N/A release) then Patch will be automatically changed to Increment w/AutoReset for you.
- Event Logging - Let's you enable/disable logging of Automatic Version events. (e.g. "Upgraded from version x -> y")
- AssemblyInfo Location (optional) - Specifies a custom location of the AssemblyInfo class file. The default location is in the Properties folder.
- Primary Version Type - Setting this option to a value other than None will store the selected attribute's value as a MSBuild property named "AssemblyVersions". This allows developers to use a custom build process without needing to parse the version number from a text file or the AssemblyInfo source file.
To configure Automatic Versions, go to the Tools Menu -> Automatic Versions Settings
Each time you build your project, the versioning will automatically change.
To use the "On Demand" version options, right click on the project and choose "Build New Version" to increment all "On Demand" settings, or use "Build New Major Version" or "Build New Minor Version" to just increment the settings that have "On Demand" set for Major or Minor respectively.
- Released 2.x version with async load support.
- Removed the 'Build New Version' context menu in favor of just the more granular 'Build New Major Version' and 'Build New Minor Version' buttons.
- Breaks support for < VS2017
- [AUTOVER-96] - Added support for .NET Core projects in VS 15.8.0
- [AUTOVER-83] - UX Improvement: Lefthand treeview shifted when expanding Advanced Options
- [AUTOVER-90] - BUGFIX: There was a Bug preventing tool window from showing on projects that did not have an Any CPU config.
- [AUTOVER-79] - Bugfix to build on depend in relation to dependent projects. This does not give independent control to the on demand feature, that was broken out into a future ticket AUTOVER-88.
- [AUTOVER-87] - Bugfix for projects inside of solution folders issue
1.11.16 (3/13/2018) (Download this version)
- [AUTOVER-86] - Bugfix: Increment On Demand was causing a reset of Increment (Always) when it shouldn't.
- [AUTOVER-85] - Bugfix improvement where some cases the clickonce version type might default to AssemblyInfo instead of none.
- [AUTOVER-58] - Added version number of the tool in the titlebar
- [AUTOVER-67] - Fixed bug when there is a space in assembly attribute
- [AUTOVER-5] - Added option to set ClickOnce publish/manifest version (PRO/BETA)
- [AUTOVER-63] - New context menus for building major or minor on demand independently
- [AUTOVER-71] - New Incrementation option "Seconds Since Midnight/2"
- [AUTOVER-65] - Semver Prerelease should always have "AutoReset" if any number above it changes. Patch "None" should also have autoreset
- [AUTOVER-73] - Because we have independent control of major on demand and minor on demand they now autoreset
- [AUTOVER-74] - Semver Added none w/autoreset to the increment options (we already had it on patch)
- Off ticket: BUGFIX: Re-added missing MaxHeight on settings window for solutions that have so many projects the container grows beyond the monitor size
1.10.58 (1/9/2018) (Download this version)
- Added of short year (yy) and Year Month options (yyMM)
- Added Increment w/AutoReset
- Added Semantic Versioning option and "Package Version" functionality for .Net Core and .Net Standard packages
- Removed the donate button from the main settings page
- UX/UI overhaul for a more intuitive interface
- Marked OnDemand w/Reset as obsolete (use Increment w/AutoReset instead
- Misc Bugfixes
1.8.70 (1/3/2018) (Download this version)
- Major Bugfix for solutions settings not saving all configurations.
- Minor Bugfix with settings not rebinding when clicking a configuration and then going back to the parent level
- Note on this release: We had heard reports for a long time of users complaining about Automatic Versions not saving their settings, but the descriptions were vague and we'd never been able to replicate until a few weeks ago. This release fixes that issue. For clarification, it would only happen on the solution level and only when you had multiple configurations set. Thank you to any recent users' reporting that gave us a little extra info we badly needed.
- Minor Bugfix: User reported issue with upgrading in VS Enterprise version. Updated manifest to add support for Enterprise and Community editions.
- UX Improvement to move the configurations and CPUs to the TreeView
- Added BETA/PRO support for .NET Core and .NET Standard
- Added mitigation for a known issue when saved changes do not appear to be saved when reloading
- Introducing autosave for settings
- Added option per project to disable / enable logging
- Updates to settings layout / phrasing / UI
- No longer report logging information if the version number did not change
- Bugfix: Allowing whitespace in assembly numbering attribute
- Bugfix: Changes made by T4 template increment correctly
- Bugfix: Issue finding AssemblyInfo path when URL encoded fixed
- Bugfix: Null Ref exception fix on project
- Added VS2017 support (by popular demand)
- Metadata updates
- Added donate button to try to gain support in maintaining this product (if we can get a little more support from those who use this tool we'd also like to add new features)
- Bugfix: Fixing null object exception when using Performance Profiler which also fixes files that are added to the solution items folder when there is no project
- Improvement: Reduced the verbosity of the Event Logs in the release version
- Bugfix: Intermittent freezing of Visual Studio 2015 Update 2 when opening.
- Added Visual Studio 2015 support.
- Added support for website projects and projects in solution folders.
- Added support for displaying error, warning, and informational messages to the Error List and activity information to the Status Bar.
- Added Primary Version Type for storing the selected version value in a MSBuild property named "AssemblyVersion" in order to better integrate with your existing build processes.
- Added a "View Logs" button in the settings window to display event logs stored by the extension
- Overhauled settings model to handle multiple configurations per project, including support for the new Platform option.
- Added Increment On Demand w/Reset increment option.
- Added checks to prevent unnecessary increments for projects. This does not affect the Rebuild or Build New Version commands.
- Fixed an issue with compatibility for VS2012.