Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List of version numbers of assemblies used by it's web site

Tags:

c#

asp.net

web

A simple question. I have an ASP.NET web application which contains several assemblies and I need to create a list of version information for every assembly in the web site. (And perhaps even a few others too, but the focus is mostly for the site itself.)

This list will be displayed within the same application on a protected page and is used to validate the installation and upgrades for the website. Of course, I could just walk through all binaries in the BIN folder and extract information from them but is there a better option to do this?

And second question: what's the best method to just extract version information from another assembly? But I guess that one has asked before and I can find an answer to this myself. (Something with reflection, GetExecutingAssembly and some more stuff.)

like image 578
Wim ten Brink Avatar asked Jan 23 '23 11:01

Wim ten Brink


2 Answers

IEnumerable<String> GetLoadedAssemblies() {
    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) {
        yield return assembly.ToString();
    }
}

Gives you the name (including version number) of every assembly being used in the app domain.

mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

etc.

One possible gotcha with using this: if the website has just started then some of the assemblies you are interested in might not have been loaded into the AppDomain yet, as they're unlikely to be referenced by a special page with just this functionality on it. If you click around the site first to make sure everything is loaded it should work OK, but if you need something more robust you'd have to add some AppDomain.Load() statements to the above code.

like image 170
Matt Howells Avatar answered Jan 30 '23 04:01

Matt Howells


You could also use the GetReferencedAssemblies() method of the Assembly class to get all of the assemblies referenced by your web application.

like image 41
adrianbanks Avatar answered Jan 30 '23 05:01

adrianbanks