Puis-je toujours utiliser les assemblages Microsoft.Office.Interop avec office 2013?

J’ai dû importer un projet plus ancien (dans .Net 2) dans Visual Studio 2013, il utilise les assemblys Microsoft Primary Interop.

Visual Studio a déclaré que je devais append des références au projet. Maintenant, je suis allé et fait quelques lectures et apparemment Microsoft n’a publié que le PIA pour office 2010? (J’ai Office 2013)

Maintenant ce que j’aimerais savoir, c’est.

  1. Puis-je le faire fonctionner avec Office 2013 et être rétrocompatible?
  2. Et si oui est-ce une bonne voie pour l’avenir? Est-ce que ça va être compatible? Parce que je vois que vous avez besoin de .Net 2 (au plus tard) et que Windows 8 est livré avec 4.5 et non 3 (par défaut) et que la plupart des nouveaux ordinateurs auront Office 2012 ou 2013.

Les PIA sont un artefact historique, requirejs uniquement par les anciennes versions de .NET (avant la v4). Ils ont été soigneusement et élégamment remplacés par la fonctionnalité “Embed Interop Types”, également appelée “No PIA”. Pris en charge depuis Visual Studio 2010, vous le retrouvez dans la fenêtre Propriétés lorsque vous sélectionnez un assembly de référence. La valeur par défaut est True . Une bonne vidéo couvrant la technologie sous-jacente est disponible ici .

La raison pour laquelle Microsoft ne publie pas les PIA pour Office 2013, ils s’attendent à ce que vous intégriez les types d’interopérabilité à la place.

La fonctionnalité est très souhaitable, cela évite à votre client d’installer les PIA sur sa machine et de les inclure avec votre installateur. Résoudre le problème quand ni s’en occupe, c’est un incident totalement trop courant. De plus, les PIA pour Office sont très volumineux. Le grand avantage de l’intégration des types d’interopérabilité est que votre assembly ne contient que les types que vous utilisez réellement. Beaucoup de mégaoctets réduits à quelques kilo-octets.

Le workflow est un peu différent. Au lieu d’append une référence aux assemblys Microsoft.Office.Interop comme disponible dans la boîte de dialog Ajouter une référence, onglet .NET Framework, vous utilisez maintenant l’onglet COM. Et choisissez, par exemple, ” Microsoft Excel 15.0 Object Library ” pour générer les types d’interopérabilité pour un programme qui utilise Excel. Si vous chargez un ancien projet qui utilisait auparavant des PIA, supprimez-les et rajoutez-les à partir de l’onglet COM.

Notez qu’une fonctionnalité est perdue, cibler intentionnellement une ancienne version d’Office que vous n’avez pas installée sur votre machine de développement est plus difficile. Si cela est nécessaire, vous avez toujours besoin des PIA pour cette version, forcez les types d’interopérabilité à intégrer dans la fenêtre Propriétés. En fait, cela est discutable, Microsoft a du mal à garder les nouvelles versions d’Office totalement compatibles avec les anciennes versions. Ils ont gardé le cap pendant 15 ans maintenant, mais il est à bout de souffle. Dans le pire des cas, vous ciblez une version plus récente que celle que vous avez installée sur votre ordinateur, ce qui risque de rendre votre programme très difficile à diagnostiquer pour des exceptions telles que AccessViolationException .

Notez que vous devez apporter de petites modifications à votre code pour lui permettre de fonctionner. Les classes synthétiques ” XxxxClass ” ne sont pas incorporées, juste les interfaces ” Xxxx “. Supprimez simplement le mot ” Class ” de la nouvelle déclaration.

Communauté VS 2015 avec Office 365 – pour quelque raison que ce soit, l’object Add from the COM ne fonctionne pas. La solution est d’aller dans le GAC et de trouver les assemblages d’interopérabilité, de les copier dans un répertoire temporaire, puis d’append à votre projet comme n’importe quelle DLL.

De plus, si vous ne le savez pas, Windows 8 a des versions plus anciennes de .NET Framework, mais elles ne sont pas installées par défaut. Accédez à Caractéristiques du programme —> Ajouter des fonctionnalités à Windows —-> et la première case à cocher doit être .NET 3.0 et peut-être 2.0. Notez que si vous êtes sur un serveur WSUS, vous devrez indiquer à Windows de récupérer les fichiers des serveurs Windows Update. J’espère que cela aide!

Officiellement, il n’ya pas de compatibilité ascendante de la PIA pour Office. En fait, ça marche.

Pour des raisons de compatibilité ascendante, j’utilise le PIA pour Office XP depuis plusieurs années et cela fonctionne bien avec Office XP, 2003, 2007 et 2010 (pas encore testé avec 2013) et sous Windows XP, Vista, 7 et 8.

Pour la compatibilité avec les différentes versions de Windows, j’utilise le framework .NET 3.5.

Pour l’avenir … cela dépend de ce que vous faites avec le PIA. Si possible, il est préférable de traiter directement les fichiers Open XML ou de créer un complément pour word / excel.

Je viens de découvrir que Visual Studio 2013 express ne dispose plus de support bureautique. Il vous faut donc au moins la version pro pour que cela fonctionne.