Frage

Ich musste ein älteres Projekt (in .Net 2) in Visual Studio 2013 importieren, es nutzt die Microsoft Primary Interop Assemblies.

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

Was ich jetzt gerne wissen würde:

  1. Kann ich es mit Office 2013 zum Laufen bringen und abwärtskompatibel sein?
  2. Und wenn ja, ist das ein guter Weg für die Zukunft?Wird es kompatibel sein?Weil ich sehe, dass du es brauchst .Net 2 (spätestens) und Windows 8 kommt mit 4.5 und nicht mit 3 (standardmäßig) und die meisten neuen Computer werden mit Office 2012 oder 2013 ausgestattet sein.
War es hilfreich?

Lösung

PIAs sind ein historisches Artefakt, das nur von alten .NET-Versionen (vor v4) benötigt wird.Sie wurden gründlich und elegant durch die Funktion „Embed Interop Types“, auch bekannt als „No PIA“, ersetzt.Wird seit Visual Studio 2010 unterstützt und Sie finden es wieder im Eigenschaftenfenster, wenn Sie eine Referenzassembly auswählen.Die Standardeinstellung ist True.Ein gutes Video, das die zugrunde liegende Technologie abdeckt, ist hier verfügbar.

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

Diese Funktion ist sehr wünschenswert, denn sie erspart Ihrem Kunden die Installation der PIAs auf seinem Computer und Sie müssen sie nicht in Ihr Installationsprogramm einbinden.Das Problem lösen, wenn keiner sich darum kümmert, ein allzu häufiges Missgeschick.Darüber hinaus sind die PIAs für Office sehr umfangreich. Der große Vorteil der Einbettung der Interop-Typen besteht darin, dass Ihre Assembly nur die Typen enthält, die Sie tatsächlich verwenden.Viele Megabyte auf wenige Kilobyte reduziert.

Der Arbeitsablauf ist etwas anders.Anstatt einen Verweis auf die hinzuzufügen Microsoft.Office.Interop Um Assemblys wie im Dialogfeld „Referenz hinzufügen“ auf der Registerkarte „.NET Framework“ verfügbar zu erstellen, verwenden Sie jetzt die Registerkarte „COM“.Und wählen Sie, sagen Sie: „Microsoft Excel 15.0 Object Library" um die Interop-Typen für ein Programm zu generieren, das Excel verwendet.Wenn Sie ein altes Projekt laden, das zuvor PIAs verwendet hat, entfernen Sie einfach diese Referenzassemblys und fügen Sie sie über die Registerkarte „COM“ wieder hinzu.

Beachten Sie, dass eine Funktion verloren geht. Es ist schwieriger, absichtlich auf eine alte Version von Office abzuzielen, die Sie nicht tatsächlich auf Ihrem Entwicklungscomputer installiert haben.Wenn dies eine Anforderung ist, benötigen Sie weiterhin die PIAs für diese Version. Erzwingen Sie, dass „Interop-Typen einbetten“ im Fenster „Eigenschaften“ auf „True“ gesetzt ist.Tatsächlich ist dies fraglich, da es Microsoft schwerfällt, neue Office-Versionen vollständig mit alten Versionen kompatibel zu halten.Sie halten es jetzt seit 15 Jahren aufrecht, aber es geht langsam die Puste aus.Ein Worst-Case-Szenario besteht darin, dass Sie auf eine neuere Version abzielen, als Sie auf Ihrem Computer installiert haben, was zum Absturz Ihres Programms führen kann sehr Schwer zu diagnostizierende Ausnahmen wie AccessViolationException.

Beachten Sie, dass Sie kleine Änderungen an Ihrem Code vornehmen müssen, damit er funktioniert.Das synthetische „XxxxClass„Klassen sind nicht eingebettet, nur die“Xxxx„Schnittstellen.Entfernen Sie einfach das Wort „Class" von dem neu Stellungnahme.

Andere Tipps

vs 2015 Community mit Office 365 - aus welchem Grund auch immer das Hinzufügen des COM-Objekts nicht funktioniert.Die Lösung ist in den GAC und findet die Interop-Anordnungen, kopiere sie in ein Temp-Verzeichnis, und dann fügen Sie Ihrem Projekt wie jede DLL hinzu.

Wenn Sie auch nicht wissen, verfügt Windows 8 über ältere Versionen von .NET-Framework, sie sind jedoch nicht standardmäßig installiert.Gehen Sie zu den Programmfunktionen ---> Hinzufügen von Funktionen von Windows ----> und das erste Kontrollkästchen sollte .NET 3.0 und vielleicht 2.0.HINWEIS, Wenn Sie sich auf einem WSUS-Server befinden, müssen Sie Windows mitnehmen, um die Dateien von den Windows Update-Servern zu ergreifen.Ich hoffe es hilft!

Offiziell gibt es keine Rückwärtskompatibilität des PIA für Büro.In der Tat funktioniert es.

Für Rückwärtskompatibilitätsgründe verwende ich die PIA für Office XP seit einigen Jahren, und es funktioniert gut mit dem Office XP, 2003, 2007 und 2010 (noch nicht mit 2013 getestet) und unter Windows XP, Vista, 7 und 8.

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

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

Ich habe gerade herausgefunden, dass der Visual Studio 2013 Express nicht mehr Bürounterstützung hat.Sie benötigen also mindestens die Pro-Version, um es funktionieren zu lassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top