2009-02-11 15 views
8

Wie funktioniert Excel VSTO? Wenn ich eine Excel-Arbeitsmappenlösung in Visual Studio 2005 erstelle, kann ich dann gerne mit vollem Zugriff auf das Excel-Objektmodell programmieren und das Excel-Arbeitsblatt sogar als Entwurfsoberfläche behandeln. Wenn ich die Lösung erstelle, bekomme ich eine .XLS Datei und eine .DLL (die meinen C# Code enthält).Wie funktioniert Excel VSTO?

Ich kann jetzt die Excel-Tabelle nur durch einen Doppelklick auf den .XLS und es ist mein Blatt Funktionieren mit all meiner C# -Code und irgendwelchen Kontrollen mich auf dem Blatt fiel usw.

Wie wird das Blatt verweist den Start .DLL? Welcher Teil der Excel-Arbeitsmappe/Arbeitsblatt sagt ihm, dass er die CLR starten und meine Assembly hosten muss?

Antwort

7

Nach this (dank PintSizedCat) für Excel 2003 geschieht Folgendes:

Das Microsoft Office-Anwendung prüft die benutzerdefinierten Dokumenteigenschaften , um zu sehen, ob es verwaltetem Code Erweiterungen mit dem Dokument verbunden. Weitere Informationen finden Sie unter Übersicht über benutzerdefinierte Dokumenteigenschaften.

Wenn es verwaltete Codeerweiterungen gibt, lädt die Anwendung AddinLoader.dll. Dies ist eine nicht verwaltete DLL, die die Ladekomponente für die Visual Studio 2005 Tools für Office Second Edition Laufzeit ist. Weitere Informationen finden Sie unter Visual Studio-Tools für Office-Laufzeit Übersicht.

AddinLoader.dll lädt das .NET Framework- und startet den verwalteten Teil der Visual Studio Tools für Office- Laufzeit.

Die Visual Studio-Tools für Office Laufzeit erstellt eine Anwendungsdomäne, Sätze Politik für die Anwendungsdomäne nicht der Arbeitsplatz-Zone zu vertrauen und prüft die Codezugriffssicherheitspolitik Speicher haben eine Politik für die zu finden Anpassungsbaugruppe.

Das .NET Framework validiert die Beweise, die von der Assembly gegen die Richtlinie präsentiert werden. Wenn es fehlschlägt, wird ein Fehler ausgelöst. Wenn es passiert, wird der Prozess fortgesetzt.

Wenn die Anpassung verwendet die Visual Studio Tools für Office- Laufzeit verwendet es für Montage Updates eine Entfaltungs manifestieren, zu überprüfen. Wenn Aktualisierungen erforderlich sind, werden diese jetzt ausgeführt. Die Visual Studio-Tools für Office runtime lädt die Assembly in die Anwendungsdomäne .

Die Visual Studio-Tools für Office Laufzeit ruft das Startup-Ereignis Handler in Ihrer Anpassung Assembly. Weitere Informationen finden Sie unter Visual Studio-Tools für Office Project Ereignisse.

In meinem Test-Projekt Excel-Arbeitsmappe Ich habe zwei benutzerdefinierte Eigenschaften:

_AssemblyName, Wert = * _AssemblyLocation, value = {533b2c13-a125-418a-bfff-9546b0762807}

Ich nehme diese sind die Eigenschaften, die die VSTO-Laufzeit an meine Assembly leiten.

5

Dies ist alles in der Registrierung getan, sollten Sie in der Lage sein, den Schlüssel in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel oder Ihre gleichwertige Anwendung zu finden. Ich habe mehr Erfahrung mit COM-Addins, die auch an anderer Stelle in der Registry registriert sind. Dieser Schlüssel sollte ein LoadBehaviour-Element enthalten, das verwendet wird, um zu bestimmen, wie die Anwendung geladen wird (2 wird manuell geladen, 3 wird beim Start automatisch geladen).

Haben Sie ein Setup-Projekt für Ihren VSTO? Darin können Sie den Registrierungsschlüssel sehen, der gesetzt ist, aber das Setup-Programm wird/sollte auch die VSTO in GAC registrieren (obwohl ich mein Wort dafür nicht nehme, da ich ein bisschen shakey mit VSTO bin, wie ich sagte).

Hoffe, dass dies hilft, werde ich versuchen, weitere Informationen für Sie zu finden.

Bearbeiten Sie sollten versuchen, die folgenden http://msdn.microsoft.com/en-us/library/bb386298.aspx zu lesen, die Ihnen eine Erklärung dessen geben, was das Addin ist. Es ist wirklich nur ein Wrapper um einen COM-Host, der aus der Registry geladen wird und der VSTO spricht mit dem Interoparability-Code.

Ebenfalls nützlich sind http://msdn.microsoft.com/en-us/library/23cw517s.aspx (Erste Schritte mit Visual Studio Tools für Office Started, nicht klopfen, weil es in Gestartet sagt Erste, es gibt eine Menge nützlicher Informationen in dort) und http://msdn.microsoft.com/en-us/library/hy7c6z9k.aspx (die aus dem ersten verknüpft ist und ein Überblick über VSTO Addins).

+0

Ich habe einen Blick unter den reg-Schlüssel geworfen und da ist nichts für mein VSTO .Net-Projekt (es gibt ein 'Addins'-Unterverzeichnis mit 2 anderen Addins). Ich habe noch kein Setup-Projekt für meine VSTO. – ng5000

+0

Es könnte unter HKEY_CURRENT_USER sein –

Verwandte Themen