Fixes and/or Improvements:
- Added complete support for VC projects including .vcxproj & .vcproj.
- All padding issues fixed.
- A project's assembly versions are only changed if the project has been modified.
Reason for 3 changes in beta versions in span of two days
- Order of versioning style values is now according to their respective positions in the attributes i.e. Major, Minor, Build, Revision.
- Fixed issue with global variable storage with some projects.
- Fixed issue where if a project item's file does not exist, a exception is thrown.
- Fixed a typo due to which the ProjectFilename was not set correctly in the IncrementorContext Constructor.
VCProjectEngine's versions are not backward compatible (which is by design). Every new Visual Studio comes with it's own VCProjectEngine.dll which is the same as VS's version i.e. VS2005 with v8, VS2008 with v9 and VS2010 with v10. If I build BuildVersionIncrement on my system using VS2010, and I reference VCProjectEngine.dll in my project, the resulting VSI will install successfully on any VS version but will only work if VS2010 is installed. This will happen (in this example) because the version of VCProjectEngine.dll referenced in BuildVersionIncrement.dll will be v10 which only comes with VS2010.
Due to this, the only solution was to build three separate dlls, referencing the specific version of VCProjectEngine.dll for the target Visual Studio version. I didn't wanted this. To solve the issue, the final solution I came up with was:
I have removed VCProjectEngine.dll reference and have instead used late binding (by using reflection) to get the required property of the VCProject i.e. PrimaryOutput which fixed the problem.
I apologize for the inconvenience. :)