it-swarm.com.de

Kann ich mit Office 2013 weiterhin Microsoft.Office.Interop-Assemblys verwenden?

Ich musste ein älteres Projekt (in .Net 2) in Visual Studio 2013 importieren. Dabei werden die primären Interop-Assemblies von Microsoft verwendet.

Visual Studio sagte, dass ich Referenzen zum Projekt hinzufügen muss. Nun ging ich und las etwas und anscheinend hat Microsoft die PIA nur für Office 2010 veröffentlicht. (Ich habe Office 2013)

Nun würde ich gerne wissen.

  1. Kann ich mit Office 2013 arbeiten und abwärtskompatibel sein?
  2. Und wenn ja, ist dies ein guter Weg für die Zukunft? Wird es kompatibel sein? Da ich sehe, benötigen Sie .Net 2 (spätestens) und Windows 8 kommt mit 4.5 und nicht mit 3 (standardmäßig), und die meisten neuen Computer verfügen über Office 2012 oder 2013.
45
Zapnologica

PIAs sind ein historisches Artefakt, das nur von älteren .NET-Versionen (vor v4) benötigt wird. Sie wurden gründlich und elegant durch die Funktion "Interop-Typen einbetten" ersetzt, die auch als "Keine PIA" bezeichnet wird. Unterstützt seit Visual Studio 2010, finden Sie es wieder im Eigenschaftenfenster, wenn Sie eine Referenzbaugruppe auswählen. Der Standardwert ist True. Ein gutes Video, das die zugrunde liegende Technologie abdeckt, ist hier erhältlich .

Aus diesem Grund veröffentlicht Microsoft die PIAs nicht für Office 2013, sondern erwartet, dass Sie stattdessen die Interop-Typen einbetten.

Diese Funktion ist sehr wünschenswert, da Ihr Kunde die PIAs nicht auf seinem Computer installieren muss und Sie diese dem Installationsprogramm hinzufügen müssen. Das Problem zu lösen, wenn sich keiner um es kümmert, ein allzu allgemeines Missgeschick. Darüber hinaus sind die PIAs für Office sehr groß. Der große Vorteil des Einbettens der Interop-Typen besteht darin, dass Ihre Assembly nur die Typen enthält, die Sie tatsächlich verwenden. Viele Megabytes auf wenige Kilobytes reduziert.

Der Workflow ist etwas anders. Anstatt einen Verweis auf die Microsoft.Office.Interop-Assemblys hinzuzufügen, die im Dialogfeld Referenz hinzufügen auf der Registerkarte .NET Framework verfügbar sind, verwenden Sie jetzt die Registerkarte COM. Wählen Sie "Microsoft Excel 15.0 Object Library" aus, um die Interop-Typen für ein Programm zu generieren, das Excel verwendet. Wenn Sie ein altes Projekt laden, in dem zuvor PIAs verwendet wurden, entfernen Sie diese Referenzbaugruppen und fügen Sie sie wieder auf der Registerkarte COM hinzu.

Beachten Sie, dass eine Funktion verloren geht. Das absichtliche Anvisieren einer alten Office-Version, die Sie nicht tatsächlich auf Ihrem Entwicklungscomputer installiert haben, ist schwieriger. Wenn dies eine Voraussetzung ist, benötigen Sie immer noch die PIAs für diese Version. Erzwingen Sie im Fenster Eigenschaften die Option Interop-Typen einbetten. Eigentlich ist dies fragwürdig, Microsoft hat Schwierigkeiten, neue Office-Versionen vollständig mit alten Versionen kompatibel zu halten. Sie haben es seit 15 Jahren aufrechterhalten, aber es hat kein Steam mehr. Im schlimmsten Fall wird eine neuere Version als auf Ihrem Computer installiert, was dazu führt, dass Ihr Programm mit very zum Absturz gebracht wird, um Ausnahmen wie AccessViolationException zu diagnostizieren. 

Beachten Sie, dass Sie kleine Änderungen an Ihrem Code vornehmen müssen, damit er funktionieren kann. Die synthetischen "XxxxClass" -Klassen sind nicht eingebettet, sondern nur die "Xxxx" -Schnittstellen. Entfernen Sie einfach das Wort "Class" aus der Anweisung new.

119
Hans Passant

VS 2015-Community mit Office 365 - aus irgendeinem Grund funktioniert das Add aus dem COM-Objekt nicht. Gehen Sie zum GAC, suchen Sie die Interop-Assemblys, kopieren Sie sie in ein temporäres Verzeichnis und fügen Sie sie wie eine beliebige DLL zu Ihrem Projekt hinzu.

4
Rob

Wenn Sie nicht wissen, verfügt Windows 8 auch über ältere Versionen von .NET Framework, diese werden jedoch standardmäßig nicht installiert. Gehen Sie zu Programmfunktionen ---> Funktionen zu Windows hinzufügen ----> und das erste Kontrollkästchen sollte .NET 3.0 und möglicherweise 2.0 sein. Wenn Sie sich auf einem WSUS-Server befinden, müssen Sie Windows anweisen, die Dateien von den Windows Update-Servern abzurufen. Ich hoffe es hilft!

1
amoor005

Offiziell gibt es keine Abwärtskompatibilität des PIA for Office. In der Tat funktioniert es. 

Aus Gründen der Abwärtskompatibilität verwende ich die PIA für Office XP seit mehreren Jahren. Sie funktioniert gut mit Office XP, 2003, 2007 und 2010 (noch nicht mit 2013 getestet) und unter Windows XP, Vista, 7 und 8 . 

Zur Kompatibilität mit den verschiedenen Windows-Versionen verwende ich das .NET Framework 3.5.

Für die Zukunft ... es hängt davon ab, was Sie mit der PIA machen. Wenn möglich, ist es viel besser, direkt mit den Open XML-Dateien zu arbeiten oder ein Add-In für Word/Excel zu erstellen.

0
pmartin

Ich habe gerade herausgefunden, dass der Visual Studio 2013 Express keine Office-Unterstützung mehr hat. Sie benötigen also mindestens die Pro-Version, damit es funktioniert. 

0
mr_w_snipes