C# dual Outlook 2007/2010 VSTO Add-in - c#

We need to create a VSTO add-in in C# that supports both Outlook 2007 and 2010.
To start off we created 3 projects:
File->New Project->Office->2007->Outlook 2007 Add-in
File->New Project->Office->2010->Outlook 2010 Add-in
File->New Project->Windows->Class library
All shared code is in project #3.
So far, we have partially developed the add-in and have been using ClickOnce deployments for testing.
One day, we noticed someone installed the 2010 add-in for 2007 Outlook and had no ill effects whatsoever.
So a few questions:
Is there any reason to create the
2007 VSTO project? Can we just
create the 2010 project?
Or is the only difference the version of
the office runtime that is
bootstrapped by the ClickOnce
installer? Can you just install the 2010 runtime for Outlook 2007?
If there is no difference, why are
there two Visual Studio project
templates?
In our final solution, we will be using a WiX installer, which is also working thus far. The WiX installer will be simplified greatly if we can use 1 project for the add-in.

Is there any reason to create the 2007 VSTO project? Can we just create the 2010 project?
You can just use the 2010 project, but if you accidentally reference any 2010 ONLY api's, for example accessing any of the new conversation API's will cause your add-in to blow up in 2007.
Or is the only difference the version of the office runtime that is bootstrapped by the ClickOnce installer? Can you just install the 2010 runtime for Outlook 2007?
Basically you are writing a VSTO 3.0 add-in, which works for both 2007 and 2010. VSTO doesn't actually care which template you are writing for, only that your add-in is a VSTO 3.0 add-in.
If there is no difference, why are there two Visual Studio project templates?
2 reasons that I can see, F5 debugging support, and to make sure you do not access a new API'
If you do go down the only 2010 add-in road, I suggest you do a compile of the solution against the Microsoft.Office.Interop.Outlook v12 PIA which will show you any new API's that you are accessing. If you do want to target some of these new API's only IF your add-in is hosted in 2010 then have a look at http://blogs.msdn.com/b/vsto/archive/2010/06/04/creating-an-add-in-for-office-2007-and-office-2010-that-quot-lights-up-quot-on-office-2010-mclean-schofield.aspx

Related

Developing PowerPoint AddIn, getting Office 365 error

After creating Office Add-In template project, on execution I am getting an error which says application isn't installed in this computer.
What should I have to install? I ave already installed Office Tools from Visual Studio installation.
I have Visual Studio 2017 Project Type was : Office Add-In ( PowerPoint Web Add In) Office version is : 2007
A Web Add-in (which uses the Office JS APIs) only works with Office 365. You'd need to create a VSTO project for an Add-in that runs in any earlier version of Office.

Steer VS2013 Excel automation into either Excel 2010 or 2013 when both are installed

While using Visual Studio 2013/C# to create Excel automation ... I have both Office 2010 and Office 2013 on my machine. How do I create an add-in that will install into Excel 2010 or on another case install into 2013, my choice. Will creating a new 2010 or 2013 add-in project do the trick or do I have to configure something to steer it to one or the other? Thanks
You have to create an add-in per version of Office you wish to target. i.e. one for 2010; another for 2013 and so forth. The Office types used in each add-in are locked to that version of office. COM and Automation does allow you to create objects from version-independent PROG IDs but that's another story.
However if done right, you could abstract out some of your core code to be shared across Office installations.

VSTO 2012: backward compatibility

Since lately the Visual Studio Tools For Office 2012 (VSTO 2012) are available for download.
Can this new version still used for developing Add-In solutions for older Office versions (2007,2010)? Are there any advantages over VSTO 4.0 (besides Office 2013 support)
Yes, it can. I'm using VS2012 for an Excel 2007 project and it works fine.
The trick is to change the debug path in your project file so that VS uses the older version of the Office app your plugin is for.
Create your VSTO project (let VS create the project for Office 2010)
Edit the project file and find the <ProjectProperties> with a HostName attribute. It will be a child element of a <VisualStudio> element.
Change the DebuginfoExeName attribute value of the <ProjectProperties> attribute to be the path to the older version of the Office application .exe file
Save your project
Now when you go to debug your app it should launch the older version of your Office app and attach to that process to load your VSTO.
In my project, the new <ProjectProperties> element looks like this for Excel 2007:
<ProjectProperties
HostName="Excel"
HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}" OfficeVersion="14.0"
VstxVersion="4.0"
ApplicationType="Excel"
Language="cs"
TemplatesPath=""
DebugInfoExeName="#Software\Microsoft\Office\12.0\Excel\InstallRoot\Path#excel.exe"
AddItemTemplatesGuid="{51063C3A-E220-4D12-8922-BDA915ACD783}" />
Deployment also works fine. I deploy my add-in via ClickOnce and it is added to Excel 2007 clients without any additional changes.
As far i know you can deploy your solution to previous version office. I once developed an add-in for ppt 2013 and it worked fine in ppt 2010. Note that The API for the new VSTO has several additional features and last time i only used existing features, but not the new ones.
I've never tested this, but i think if you use new event handler that only works in 2013, when you deploy it in 2010 it simply does nothing / doesn't work.
As i mentioned, the obvious advantage of new VSTO is more features available, for example in ppt 2013, it has event handler when the users do dragging, you should checked them by yourselves. If your solution doesn't need these new features, you can develop it in the previous version of VSTO to make sure the backward compatibility.

How to install/deploy VSTO Excel 2010 Addin developed in C#.net?

I have developed an excel addin using VSTO in C#.net .Now i want to deploy this addin in other machines too .So that users who installed this can see my addin in excel menu -> Addins-> MyAddin
Alternatively can i give them just Excel with myaddin.So that whoever has this Excel can access addin and use it.This way they don't see myaddin in every excel file addins menu.
You can use a Visual Studio 2010 setup project to create a Windows Installer package. See this MSDN Link
Quote from that Link
Summary: Learn how to deploy a Microsoft Visual Studio Tools for the
Office system 2010 add-in or document- level solution using a Visual
Studio 2010 setup project to create a Windows Installer package that
targets the 2007 Microsoft Office system or Microsoft Office 2010.
Wouter van Vugt, Code Counsel
Ted Pattison, Ted Pattison Group
This article was updated by Microsoft with permission from the
original authors.
Applies to: Visual Studio 2010 Tools for Office, 2007 Microsoft Office
system, Microsoft Office 2010, Visual Studio 2010.
Download: http://code.msdn.microsoft.com/VSTO2010MSI
Contents
Overview
Deployment Methods
Deploying Office solutions that target the Visual Studio 2010 Tools for Office runtime
Download Samples Provided with this Article
Creating a Basic Installer
Conclusion
Additional Resources
About the Authors
EDIT
You may also see this link for All Users.
Conceptually, all you need to concentrate on is get yourself a COM object created which must be running even when the application (MS Excel here) is not open in the explorer.
More can be figured out from the following link :
http://www.codeproject.com/Articles/7859/Building-COM-Objects-in-C
(P.S : link is for c# not c).
Next you should give your users a .exe file including code to create the COM object.

C# VSTO Project change from Excel 2010 to Excel 2007

I have a solution in VS2010 that was developed as an Excel 2007 add-in. Unfortunately something happened with my profile and since then VS runs the solution with Excel 2010. Somehow my profile got corrupted and my VS solution got corrupted too changing the Office library from 2007 to 2010. I tried changing the library back to 2007 but every time I open the VS solution VS changes it. Anyone has an idea how to fix this problem?
You must have installed Office 2010 which forces VS.NET to use the Office 14 PIAs. You can still deploy your add-in to Office 2007, you just have to be sure you don't use any Office 2010 specific features.
Also see related SO post .

Categories

Resources