Ok someone please explain to me why this works in VS 2003 and not VS 2005
I want the C#.NET version number of the DLL that was created for the
specific build of my application. I copied the code from an old C#.NET VS2003
application I wrote years ago.
Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
if (assembly != null)
{
FileVersionInfo verInfo =
FileVersionInfo.GetVersionInfo(assembly.Location);
double majorVersion = verInfo.ProductMajorPart;
double minorVersion = verInfo.ProductMinorPart; ;
int BuildVersion = verInfo.ProductBuildPart;
PageTitle.Text = verInfo.CompanyName + " " + verInfo.ProductName + " (" +
verInfo.ProductVersion.ToString() + ")";
}
In VS2003 this would give me the version number of the DLL in the /bin
folder based on how I had configured the AssemblyInfo.cs. Say for example
[assembly: AssemblyVersion("3.0.*")]
In addtion every build of the VS2003 project would report a new build number
(revision #).
However, in C# VS2005. The version number is always reported as 0.0.0.0. It
appears to be getting the version number from the ASP.NET Temporary cache
folder. I read this has to do with shadowing. All the version numbers for DLL
in the cache are indeed 0.0.0.0
I tried using the following line:
Assembly assembly = System.Reflection.ssembly.Load("App_Code")
And I get a version number, however the build number never changes with each
build. However if I comeback the next day and build again both the minor and
revision numbers do change. I thought these two numbers were based on the
timestamp of the build action. So why do they only change once a day?
I tried putting my AssemblyInfo.cs file in the root of the project but I
cannot do perform an Assembly.Load from the root.
Seems to me this all worked better in VS2003. How in the world do I get the
real version number for my project generated by the Build command in VS 2005.
I have seen some examples that manually alter the assemblyinfo.cs file. But
that seems over complex and unnecessary for info that should be easy to
retrieve

Signature
JP
.NET Software Developer
Family Tree Mike - 28 Feb 2008 17:03 GMT
> Ok someone please explain to me why this works in VS 2003 and not VS 2005
>
[quoted text clipped - 43 lines]
> that seems over complex and unnecessary for info that should be easy to
> retrieve
I have used assembly.GetName().Version.ToString(). The file version number
is a very different thing.
JP - 29 Feb 2008 15:34 GMT
I understand what your saying, but even if I do not use the file info object.
Say I just flat out refer to the version number directly from the assembly
build:
string Major =
Assembly.GetExecutingAssembly().GetName().Version.Major.ToString();
string Minor =
Assembly.GetExecutingAssembly().GetName().Version.Minor.ToString();
string Revision =
Assembly.GetExecutingAssembly().GetName().Version.Revision.ToString();
All the numbers come back 0 in VS2005 but in VS2003 I get the correct
numbers.

Signature
JP
.NET Software Developer
> > Ok someone please explain to me why this works in VS 2003 and not VS 2005
> >
[quoted text clipped - 46 lines]
> I have used assembly.GetName().Version.ToString(). The file version number
> is a very different thing.