Développement Office et redirections des PIA

imageAvec un collègue nous nous sommes posés quelques questions sur le développement autour d’Office et surtout sur le déploiement des PIA (Primary Interop Assembly).

La problématique est la suivante : sur nos postes nous avons Office 2010 d’installé. Nous avons donc référencé, dans notre projet de manipulation de documents Office, les PIA d’Office 2010. Ces assemblies permettent aux applications .Net d’utiliser les fonctionnalités Office. Ceci signifie que lors du déploiement de l’application, il faut qu’Office et les PIA soient installés sur le poste client (ou sur le serveur si c’est une application web par exemple). Pour information, avec Office 2010, les PIA sont forcément installées, ce qui n’était pas le cas avec les anciennes versions. Elles ne sont d’ailleurs pas encore “redistribuable” en version 2010.

Nous venons de découvrir que sur le serveur c’est Office 2007 qui est installé, or le projet doit à terme fonctionner avec Office 2010…

Doit-on changer nos références? [Edit] Non. Lorsque l’on instancie une classe Application (pour Word par exemple), celle-ci est instanciée (en interne) en utilisant le ProgID “Word.Application” et non “Word.Application.14”. Ce ProgID est indépendant de la version d’Office installée et donc si les PIA 2007 sont installées, notre application fonctionnera.

La version installée sur le serveur est Office 2007 (version 12.0). Si nous avions référencé les PIA 12.0, après installation d’Office 2010 la redirection se ferait automatiquement. Office installe des assemblies de redirection de version dans le GAC (Policy.12.0.Microsoft.Office.Interop.XXX). Chaque assembly est accompagnée d’un fichier de configuration qui indique à la CLR que lorsque notre application lui demandera de charger une PIA 12.0, elle devra lui fournir la version 14.0.

Pour s’en assurer, il suffit d’ouvrir un Command Prompt et de se rendre dans le répertoire du GAC de l’assembly Policy comme indiqué ci-dessous :


image

Dans le répertoire Policy.12.0.Microsoft.Office.Interop.Word se trouvent une assembly et un fichier de config. Pour éditer le fichier de configuration il suffit depuis le command prompt de taper le nom de fichier. Ceci aura pour effet de l’ouvrir dans Visual Studio. Nous pouvons ainsi visualiser le fameux BindingRedirect de la version 12.0 vers la version 14.0 :


image

Les redirections d’Office 2003 vers 2010 sont également présentes dans le GAC.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s