I've probably spend days to figure out a way to detect if Visual Studio is about to (re)compile a project or use the last output since when there are no changes. Either it's buried deep inside (Visual Studio documentation isn't that good) or it's simple
not possible via Visual Studio. The only way I know that will work is by either check all files on access time every time a build is started or by hooking in on every code change that occurs (like a source control addin) and mark a project as modified. Both
methods will turn this lightweight addin to something pretty heavy.
The recommended settings is only incrementing on a Release build (when you're shipping) since it doesn't has much use to keep track of versions on debug versions.
The "Increment Before Build" setting allows you to increment versions before or after the compile action but has nothing to do with detecting changes in projects.
The 2.2 version (I hope we will have a beta soon) will contain an option where you can execute the increment manually (solution or at project level). This allows you to always increment when a certain configuration build is selected (eg Release) and perform
increments on other builds when you desire.
With a little luck vs2010 has beter support for detecting modifications.
Hope this helps.