I have a requirement to install multiple web setup projects (using VS2005 and ASP.Net/C#) into the same virtual folder. The projects share some assembly references (the file systems are all structured to use the same 'bin' folder), making deployment of changes to those assemblies problematic since the MS installer will only overwrite assemblies if the currently installed version is older than the one in the MSI.

I'm not suggesting that the pessimistic installation scheme is wrong - only that it creates a problem in the environment I've been given to work with. Since there are a sizable number of common assemblies and a significant number of developers who might change a common assembly but forget to update its version number, trying to manage versioning manually will eventually lead to massive confusion at install time.

On the flip side of this issue, it's also important not to spontaneously update version numbers and replace *all* common assemblies with *every* install, since that could (temporarily at least) obscure cases where actual changes were made.

That said, what I'm looking for is a means to update assembly version information (preferably using MSBuild) only in cases where the assembly constituents (code modules, resources etc) has/have actually changed.

I've found a few references that are at least partially pertinent [here](http://code.msdn.microsoft.com/AssemblyInfoTaskvers/Release/ProjectReleases.aspx?ReleaseId=232 "here")  (AssemblyInfo task on MSDN) and [here](http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/94054d89-ba19-4658-9e4e-ce7d8ff4dea3/ "here") (looks similar to what I need, but more than two years old and without a clear solution).

My team also uses TFS version control, so an automated solution should probably include a means by which the AssebmlyInfo can be checked out/in during the build.

Any help would be much appreciated.

Thanks in advance.