Question

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

Visual Studio a déclaré que je devais ajouter des références au projet.Maintenant, je suis allé lire un peu et apparemment, Microsoft n'a publié le PIA que 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 à suivre pour l’avenir ?Est-ce que ça va être compatible ?Parce que je vois que tu as besoin .Net 2 (au plus tard) et Windows 8 est livré avec 4.5 et non 3 (par défaut) et la plupart des nouveaux ordinateurs auront Office 2012 ou 2013.
Était-ce utile?

La solution

Les PIA sont un artefact historique, requis uniquement par les anciennes versions de .NET (avant la v4).Ils ont été remplacés de manière complète et élégante par la fonctionnalité « Embed Interop Types », également connue sous le nom de fonctionnalité « No PIA ».Pris en charge depuis Visual Studio 2010, vous le retrouverez dans la fenêtre Propriétés lorsque vous sélectionnez un assembly de référence.Il est par défaut True.Une bonne vidéo qui couvre la technologie sous-jacente est disponible ici.

C'est la raison pour laquelle Microsoft ne publie pas les PIA pour Office 2013, mais s'attend à ce que vous intégriez plutôt les types d'interopérabilité.

La fonctionnalité est très appréciée, elle évite à votre client d'avoir à installer les PIA sur sa machine et à vous de les inclure avec votre installateur.Résoudre le problème alors que ni l’un ni l’autre ne s’en occupe, une mésaventure bien trop courante.De plus, les PIA pour Office étant 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.De nombreux mégaoctets réduits à quelques kilo-octets.

Le flux de travail est un peu différent.Au lieu d'ajouter une référence au Microsoft.Office.Interop assemblys disponibles dans la boîte de dialogue Ajouter une référence, onglet .NET Framework, vous utilisez maintenant l'onglet COM.Et choisissez, dites : "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 simplement ces assemblys de référence 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 réellement installée sur votre machine de développement est plus difficile.Si c'est une exigence, vous avez toujours besoin des PIA pour cette version, forcez les types d'intégration d'interopérabilité à True dans la fenêtre Propriétés.En fait, cela est discutable, Microsoft a du mal à maintenir les nouvelles versions d'Office complètement compatibles avec les anciennes versions.Cela fait maintenant 15 ans qu'ils l'entretiennent mais ils s'essoufflent.Le pire des cas serait de cibler une version plus récente que celle que vous avez installée sur votre machine, ce qui risque de faire planter votre programme avec très difficile de diagnostiquer des exceptions comme AccessViolationException.

Notez que vous devez apporter de petites modifications à votre code pour lui permettre de fonctionner.Le synthétique "XxxxClass" Les classes ne sont pas intégrées, juste les "Xxxx"interfaces.Supprimez simplement le mot "Class" du nouveau déclaration.

Autres conseils

Communauté VS 2015 avec Office 365 - pour une raison quelconque, l'ajout à partir de l'objet COM ne fonctionne pas.La solution consiste à accéder au GAC et à rechercher les assemblys d'interopérabilité, à les copier dans un répertoire temporaire, puis à les ajouter à votre projet comme n'importe quelle DLL.

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

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

Pour des raisons de rétrocompatibilité, j'utilise le PIA pour Office XP depuis plusieurs années et il fonctionne très bien avec Office XP, 2003, 2007 et 2010 (pas encore testé avec 2013) et sous Windows XP, Vista, 7 et 8.

Pour des raisons de compatibilité avec les différentes versions de Windows, j'utilise le framework .NET 3.5.

Pour le futur...cela dépend de ce que vous faites avec le PIA.Si possible, il est de loin 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.Vous avez donc besoin d'au moins la version pro pour que cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top