Office development with Visual Studio 2010 (VSTO), things to consider - c#

I'm still confused by the different versions of VSTO and in which way they are compatible to office 2007/2010. I know there is a nice table for comparisons on wikipedia, but I still don't get it. My focus lies on PowerPoint.
Okay, so I have the Visual Studio 2010 Professional Edition that provides two templates for PowerPoint: a 2007 Add-In template and a 2010 Add-In template. What exactly is the difference here, is it just the version of the underlying VSTO? Apart form that, is there a difference between VSTO 4.0 and VSTO 2010? Wikipedia uses both terms.
I want the Add-In to work with both PowerPoint 2007 and 2010. Should I chose the 2007 Add-in project type or the 2010 add-in project type?
Wikipedia says: "Office 2007 applications can also use the VSTO 2010 runtime"
and it also says
"VSTO solutions developed against newer Office versions will not work in older Office versions as they lack the necessary Primary Interop Assemblies (PIAs)".
Isn't that some kind of contradiction?

below image should be helpful

A VSTO project will work only with the selected version and later i.e. a 2007 add-in will work with Office 2007 and 2010, whereas a 2010 add-in will work with only 2010.
When deciding which version to choose for an add-in, choose the version of the oldest Office version you want to support.

Related

Developing Outlook Add-In which Outlook Add-In version should I select in VS?

I am developing my first Outlook Add-In in C#. In Visual Studio I have the options to develop an "Outlook 2010 Add-in" or "Outlook 2013 Add-in" or probably an "Outlook 2016 Add-in".
This Add-In should work on one PC which runs currently Outlook 2010 but which I could upgrade to a newer version.
If I start to develop an "Outlook 2010 Add-in" will this also work in Outlook 2013 and 2016? Do I have to do something to make it work with different versions of Outlook?
My Add-In will check some details of the mails and depending on the details it will sort these mails. I guess that should work in all versions.
Is there a clear advantage of an 2013 or 2016 Add-In compared to 2010?
As mentioned in comments by #penleychan, targeting the latest version is a good thought. I did the same when I develop my VSTO addin. Most of the time I have used the common features of the Outlook and developed the addin with template version similar to the installed office (on my machine). Its easy to debug.
If the addin is going use specific feature(s) of a version of Office, then we should use that version template.
You may like to refer this link.
You can run your Office 2010 based solution in later Office versions. You just need to choose the right target .net version. Read more about that in the Running Solutions in Different Versions of Microsoft Office article.
Is there a clear advantage of an 2013 or 2016 Add-In compared to 2010?
The only benefit you get in that case - the PIAs version corresponding to the target Office version. That means you will get access to objects, methods, properties and events available in later Office versions. Anyway, at runtime you still can use the late-binding technology which allows accessing missed members at design-time. See Type.InvokeMember for more information.

VSTO add-in for Outlook 2016

I have a vsto add-in for outlook developed in Visual Studio 2010 (.NET 4.0), but now when I tried to add this add-in for Outlook 2016 it is showing invalid vsto add-in. My question is:
Can the VSTO solution developed in Visual Studio 2010/12 support in Outlook 2016?
If not then what's the alternate or if yes then what I am doing wrong here?
A VSTO add-in should be installed on the machine. At least you need to add the required windows registry entries to load the add-in, you can't just add it. See Registry Entries for Application-Level Add-Ins and Registry Entries for VSTO Add-ins for more information.
My question is 'Can the vsto solution developed in Visual Studio 2010/12 support in Outlook 2016?'
Yes, it can. See Running Solutions in Different Versions of Microsoft Office. It states the following:
Microsoft Office applications can also run solutions created by using previous versions of Visual Studio. In some cases, these solutions require different versions of the Visual Studio Tools for Office runtime. Different versions of the Visual Studio Tools for Office runtime can be installed side-by-side on the same computer.
I'd suggest creating an installer which can check for preprequsites if any, add the required windows registry keys and install the plug-in on the system.
You may find the following articles helpful:
Deploying an Office Solution by Using Windows Installer
Deploying an Office Solution by Using ClickOnce

Outlook 2007 Add-In Does Not Load on Outlook 2013

We have built a VTSO office add-in using Visual Studio 2008 (C#,vsto 2.0 runtime) targeting office 2007 as the minimum version. Works fine on 2007 and 2010 version of outlook, word, excel and power point.
It is also working on 2013 version of word, excel and power point but do not load on outlook 2013. We do not get any kind of error message. Any help will be appreciated.
Thanks in advance,
Vikas
Is it not showing any error when you set the environment variable
"VSTO_SUPPRESSDISPLAYALERTS" with value "0"?
Did you also checked if it is in disabled items list in File =>
Options => Add-Ins => Manage choose disabled items?
Outlook 2013 doesn't support add-ins that target 2007. It supports 2010 add-ins only.

convert an Excel 2010 addin to a 2007 addin (both VSTO)

I am currently working on an Excel 2010 add-in which formerly was an Excel 2007 add-in.
Somewhere in the process of switching computers, the add-in was converted i think.
Some of my customers stated that the add-in wasn't working on Excel 2007 anymore so I tried to debug it in a VirtualBox with Excel 2007 and Visual Studio 2010 installed.
Now I get the Error Message:
You cannot debug or run this project, because the required version of the Microsft Office application is not installed.
I started a new Excel 2007 add-in project and tried to find what the differences are and came up with the idea that it somewhat has to do with the dll's so I changed my 2010 addin until it looked like an 2007 addin.
I still get the error message stating that my project can't be debugged.
Is there anything I could've forgotten to change.
Writing a completely new addin is unfortunately not an option.
These questions haven't helped me so far:
Excel Addin that works on Excel 2007 and 2010
Deploying Office 2010 addin
To get VS 2010 working with Office 2007 modify the project file (.csproj) so that it will open in Office 2007 and not look for Office 2010 when run (hence the error message above).
Here is the project settings change (Excel example):
Source XPath:
//Project/ProjectExtensions/VisualStudio/FlavorProperties/ProjectProperties/#DebugInfoExeName
Old Value (Office 2010):
DebugInfoExeName="#Software\Microsoft\Office\14.0\Excel\InstallRoot\Path#excel.exe"
New Value (Office 2007):
DebugInfoExeName="#Software\Microsoft\Office\12.0\Excel\InstallRoot
\Path#excel.exe"
After changing this project setting, when you fire up the debugger (F5) it will load the Excel 2007 application instead of looking for Excel 2010.
Typically, when I am developing against multiple versions of Office with VSTO Add-ins, I have a project for each version of Office I am targeting. I put all common code between the projects into a single project (typically the oldest project) and use linked files, I add the common files to the newer projects. This allows me to write one set of common core code, abstracted from the requirements of each version of Office. This means I am no longer fighting the different ways VSTO is compiled for each version of Office. This can be made easier with shared folders and virtual machines, so I can develop and test without multiple computers. It is by no means graceful, but it works well for me. This should allow you to develop your VSTO Add-in against both Office 2007 and Office 2010 without much issue.

What's the difference between an MS Office Visual Studio Add-in, Shared Add-in, and Excel 2010 Add-in?

I am using Visual Studio 2010 to create a new add-in for Excel. Ideally I would like it to work with Excel 2011 (Mac), 2010, and 2007.
There are three template options to choose from when I start a new C# project.
(Office) Excel 2010 Add-in
(Extensibility) Visual Studio Add-in
(Extensibility) Shared Add-in
What are the differences between these template choices?
Thanks in advance.
From MS. As the name implies, you probably want to use shared add-in.
Office Excel 2010 Add-in
Creates an application-level add-in for Excel 2007 or Excel 2010. For more information, see Getting Started Programming Application-Level Add-Ins and Excel Solutions.
(Extensibility) Visual Studio Add-in
Visual Studio Add-ins add functionality to the Visual Studio and Visual Studio Macros environments. For more information, see How to: Create an Add-In.
(Extensibility) Shared Add-in
Shared Add-ins can add functionality to one or more Microsoft Office applications, as well as to Visual Studio. For more information, see How to: Create an Add-In.
Reference: http://msdn.microsoft.com/en-us/library/0fyc0azh.aspx
#1 and #3 will work for Windows machines, but straight from Geoff Darst of Microsoft's VSTO team, "the .Net Development Platform and Visual Studio Tools For Office are Windows only." You'll have to code in VBA to get functionality across all three versions.
If you want to target just the Windows environment, make sure you target the 2007 version of Excel, as I don't believe solutions developed for Excel 2010 are backward compatible with Excel 2007.

Categories