Like VBA, code written for VSTO is executed by a separate virtual machine (the CLR) which is hosted inside the Microsoft Office applications. However, unlike VBA, where the code is stored in the document file itself, programs written with VSTO are stored in separate CLI assemblies which are associated with the documents by means of custom properties.4
If the properties are present, Microsoft Office hosts the CLR and loads the assembly specified in the property into a separate appdomain named after the document's name.5 VSTO applications are subject to the .NET Framework Code Access Security constraints, in addition to the digital signature based permission model that governs VBA macros.6
VSTO development is normally performed using Visual Studio as used by professional programmers. The Office application is (re)started for each debugging session. VBA is normally developed from within the Office application and requires no special tools. VBA also has a macro recorder that can generate VBA code from user actions which is useful for non-professional programmers.
Office extensions or add-ins can be developed using VSTO and JavaScript API technologies. VSTO is Microsoft .NET technology and add-ins using JavaScript API technology use JavaScript, HTML and CSS.
JavaScript API add-ins are highly portable across platforms like iOS, mobile phones, tablets and Windows. The complete licensing process and cycle is easy and maintained within add-ins. Interactive visualization is feasible in JavaScript API add-ins using Charts, ClipArt and Maps.
JavaScript API add-in development is comparatively new technology and is introduced with Office 2016. There are limited APIs and functions available and supported.
VSTO has complete access to all Office object models. It is feasible to perform all operations on the Office client. Features that requires accessing local machine file systems and other applications are feasible and easy in VSTO. C# or any other CLI programming language can be used to create new Office add-ins.
The latest version of VSTO, as of 2018, is "Office Tools for Visual Studio" and is available with all versions of Microsoft Visual Studio 2017.
VSTO 2003, 2005, 3.0 and 2010 runtimes install in side-by-side (SxS) mode. VSTO 2005 SE runtime replaces the earlier VSTO 2005 runtime. VSTO 2010 runtime installs side-by-side with VSTO 3.0, however, Office 2007 applications can also use the VSTO 2010 runtime. All older VSTO solutions will continue to run in newer versions of Office as long as the runtime against which they were developed is installed.
VSTO solutions developed against newer Office versions will not work in older Office versions as they lack the necessary Primary Interop Assemblies (PIAs) 7 Office 2010 applications will always use VSTO 2010 Runtime. Design-time support is as follows:
Code developed with various editions of VSTO will only work with certain releases and editions of Microsoft Office 2003 and related products. Specifically, VSTO solutions developed in editions prior to VSTO 2005 SE will not work with any edition of Office 2003 other than Professional. VSTO solutions developed with VSTO 2005 SE will work with Office 2003 Standard (only application-level add-ins) and Professional. VSTO 2005 SE solutions will work with all editions of Office 2007.
"Office and SharePoint Development in Visual Studio". msdn.com. Microsoft. https://msdn.microsoft.com/en-us/library/d2tx7z6d.aspx ↩
"Visual Studio 2005 Tools for the 2007 Office System (VSTO 2005 SE) Released to the Web". blogs.msdn.com. Microsoft. November 9, 2006. http://blogs.msdn.com/vsto2/archive/2006/11/09/visual-studio-2005-tools-for-the-2007-office-system-vsto-2005-se-released-to-the-web.aspx ↩
VSTO features available by product combination http://msdn2.microsoft.com/en-us/library/aa942839(VS.80).aspx ↩
More on Word and Excel as CLR hosts http://www25.brinkster.com/fumiaki2/blog/archives.aspx?month=2003-10 ↩
"Another CLR hosts are shipped from Microsoft". Archived from the original on January 18, 2008. Retrieved January 16, 2008. https://web.archive.org/web/20080118044955/http://www25.brinkster.com/fumiaki2/blog/archives.aspx?month=2003-10 ↩
VSTO Security Model http://blogs.msdn.com/ptorr/archive/2003/11/03/56304.aspx ↩
VSTO Loader and Runtime Components https://docs.microsoft.com/en-us/archive/blogs/andreww/vsto-loader-and-runtime-components ↩