none
Developping VSPackage to target Express versions RRS feed

  • Question

  • I'm using Visual Studio 2013 Ultimate (trial) to develop a package (VSPackage) for Express versions of VS.

    For now I just created the VSPackage from project template and thus when I run it (in a Experimental instance of VS) there is a dummy command menu (Tools -> My command name) and window (View -> Other Windows -> My Tool Window).

    However, when I install the .vsix by double clicking the file, it installs properly (the installer window says it can be installed for Visual Studio Express 2013 for Windows Desktop) but I cannot see the command menu neither the tool window menu in Visual Studio 2013 Express for Windows Desktop when I run it.

    I know this is possible to have them because Nodejs Tools for Visual Studio runs on Express version and have such menu and custom tool windows.

    So, what to do to get things working properly on Express versions ?

    Thank you in advance.

    Friday, May 2, 2014 4:15 PM

Answers

  • Yes, still true, you cannot extend Express editions. All packages that do are created by Microsoft which is why they can load in Express. The VSIX ability to 'target' Express exists only so that you can supply project/item templates on Express, which is supported. Extending the IDE via Packages or AddIns is not supported.
    Tuesday, May 6, 2014 4:17 AM
    Moderator
  • The NodeJS package is made by Microsoft, by the same team that makes the Python Tools. Dino, Pavel and a number of other people listed on your linked page as coordinators all work at Microsoft, thus they can do the necessary work to get packages to load in Express, work that external people can't do as it requires making product changes (which they did before they released the NodeJS stuff publically).

    Adding those attributes makes Express attempt to load your package, which is denied and causes a runtime failure. We don't prevent you from INSTALLING a package to Express (since that just means 'writing some bits into the registry'), but it will never successfully load. As I mentioned in the other post, this is not a technological limitation it is a business decision (one I disagree with, but I don't make these decisions).

    Ryan

    Tuesday, May 6, 2014 4:11 PM
    Moderator
  • You won't be able to get your locally built version to load, correct. That said, assuming they publish PDBs (either to the project location or at the normal Microsoft symbol server) then you should be able to simply sync the sources for the release build locally and debug them, you don't need to build them yourself to do this. If they don't publish the PDB or put it on the Microsoft Symbol Servers that is a bug on their part, they should.
    Tuesday, May 6, 2014 7:13 PM
    Moderator

All replies

  • Express editions don't support extensions unfortunately

    http://stackoverflow.com/questions/21791099/ide-extensions-for-visual-studio-express

    Saturday, May 3, 2014 3:39 PM
  • Express versions DO support extensions (packages)!!!

    It's not because PTVS and ReSharper do not support Express versions that it means Express do not support extensions. I'm tired of always hearing the same...

    NuGet package manager is an extension and is available to Express versions, is it enough to prove it ???

    No ? so check the system requirements of Nodejs Tools for Visual Studio 




    Sunday, May 4, 2014 2:50 AM
  • Hi Sebastien,

    Express editions change in each VS version (2005, 2008, 2010, 2012, 2013,...) and while they have each time more and more features, the point is that Microsoft don't want them to be used for professional use so they have artificial limitations that are somewhat relaxed over time (allow unit testing, etc.).

    Visual Studio Express editions 2005, 2008, 2010 never supported extensions (so you hear it so often) and only recently (VS 2012) supports extensions created only by Microsoft, not by 3rd parties.

    Source: Ryan Molden, member of the Visual Studio team, February 08, 2013:

    http://social.msdn.microsoft.com/Forums/vstudio/en-US/0c3138d2-f80a-4f6a-a1f3-4334a18ddaf1/is-it-possible-to-write-extensions-for-visual-studio-2012-express-editions?forum=vsx

    So, overall the answer "Express editions don't support extensions" holds true as of today (Visual Studio 2013). A better answer is "Express editions don't support 3rd party extensions"


    MZ-Tools: Productivity add-ins for Visual Studio: http://www.mztools.com. My blog about developing add-ins: http://msmvps.com/blogs/carlosq/



    Monday, May 5, 2014 4:12 PM
    Moderator
  • Yes, still true, you cannot extend Express editions. All packages that do are created by Microsoft which is why they can load in Express. The VSIX ability to 'target' Express exists only so that you can supply project/item templates on Express, which is supported. Extending the IDE via Packages or AddIns is not supported.
    Tuesday, May 6, 2014 4:17 AM
    Moderator
  • OK first my apologizes about the versions.

    Yes sure before Express did not support extensibility, and now it somehow does, I should have made it clear from the beginning.

    Ryan, so I would like to understand why the Nodejs Tools for Visual Studio excellent package can extend Visual Studio Express 2013 for Web up to adding a new debug engine and interactive prompt ? As long as the source code is available, I assume that anybody (not only Microsoft) should be able to build it and make it run on its own machine, isn't it ?

    Anyway this all do not answer my question unfortunately, and by the way lately I added two attributes to the class that inherit from Package:

        [ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids.NoSolution)]
        [ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids.SolutionExists)]

    and now when I install my package through <MyPackage>.vsix file, then when I run Visual Studio Express 2013 for Windows Desktop, an error happens (sorry I can't run it at the moment) so in my opinion it means something is happening under the hood. Also, my package is listed in the package list (Tools -> Extensions and Updates...) so doesn't it mean that even Express versions are extensible to a certain extent ?

    Thank you very much in advance for clear clarifications.

    Tuesday, May 6, 2014 2:44 PM
  • The NodeJS package is made by Microsoft, by the same team that makes the Python Tools. Dino, Pavel and a number of other people listed on your linked page as coordinators all work at Microsoft, thus they can do the necessary work to get packages to load in Express, work that external people can't do as it requires making product changes (which they did before they released the NodeJS stuff publically).

    Adding those attributes makes Express attempt to load your package, which is denied and causes a runtime failure. We don't prevent you from INSTALLING a package to Express (since that just means 'writing some bits into the registry'), but it will never successfully load. As I mentioned in the other post, this is not a technological limitation it is a business decision (one I disagree with, but I don't make these decisions).

    Ryan

    Tuesday, May 6, 2014 4:11 PM
    Moderator
  • I see, thank you very much for the clear clarifications.

    Just one last question, does that mean I will never be able to build Nodejs Tools myself ? Or at best being able to build it but never being able to run my build in Express version ?

    For now it does not build here, because I did not install the Azure SDK yet, and thus that was the next step in my roadmap, install the Azure SDK, try to build Nodejs Tools myself, then run it with breakpoints in Visual Studio Ultimate (trial) in order to try to understand how it works.

    Do you mean I'd rather to give that up ? :(

    Tuesday, May 6, 2014 4:23 PM
  • You won't be able to get your locally built version to load, correct. That said, assuming they publish PDBs (either to the project location or at the normal Microsoft symbol server) then you should be able to simply sync the sources for the release build locally and debug them, you don't need to build them yourself to do this. If they don't publish the PDB or put it on the Microsoft Symbol Servers that is a bug on their part, they should.
    Tuesday, May 6, 2014 7:13 PM
    Moderator
  • Understood, thank you very much.
    Wednesday, May 7, 2014 9:17 AM