Search code examples
c#visual-studiovsixvspackage

Detect current VSIX package's version from code


I am writing a VSIX project and I would like for the code to be able to determine whether an update is available.

I know Visual Studio would be able to check for the update, however, I would like for the extension to be able to prompt user (developer) more verbosely.

  1. I wonder how could make the extension read its own version from the package manifest?

Thank you.


Solution

  • I found that I could read the version information directly from the manifest XML file.

            var doc = new XmlDocument();
            doc.Load(manifestPath);
            var metaData = doc.DocumentElement.ChildNodes.Cast<XmlElement>().First(x => x.Name == "Metadata");
            var identity = metaData.ChildNodes.Cast<XmlElement>().First(x => x.Name == "Identity");
            var version = identity.GetAttribute("Version");
    

    I also wrote a gist C# class code that encapsulate the code above. Besides, version, this technique could be used to get other information provided by the manifest file.