.netassembliesversions

How do I get the version of an assembly without loading it?


One small function of a large program examines assemblies in a folder and replaces out-of-date assemblies with the latest versions. To accomplish this, it needs to read the version numbers of the existing assembly files without actually loading those assemblies into the executing process.


Solution

  • I found the following in this article.

    using System.Reflection;
    using System.IO;
    
    ...
    
    // Get current and updated assemblies
    AssemblyName currentAssemblyName = AssemblyName.GetAssemblyName(currentAssemblyPath);
    AssemblyName updatedAssemblyName = AssemblyName.GetAssemblyName(updatedAssemblyPath);
    
    // Compare both versions
    if (updatedAssemblyName.Version.CompareTo(currentAssemblyName.Version) <= 0)
    {
        // There's nothing to update
        return;
    }
    
    // Update older version
    File.Copy(updatedAssemblyPath, currentAssemblyPath, true);