2009-02-11 8 views
8

Comment fonctionne Excel VSTO? Si je crée une solution de classeur Excel dans Visual Studio 2005, je peux ensuite coder avec plaisir avec un accès complet au modèle d'objet Excel et même traiter la feuille Excel comme surface de conception. Quand je construis la solution, j'obtiens un fichier .XLS et un .DLL (contenant mon code C#).Comment fonctionne Excel VSTO?

Je peux maintenant commencer à la feuille Excel simplement en double-cliquant sur le .XLS et il est mon bon fonctionnement de feuille avec tout mon code C# et tous les contrôles que je larguées sur la feuille, etc.

Comment est la feuille faisant référence à la .DLL? Quelle partie du classeur/feuille Excel indique qu'il doit lancer le CLR et héberger mon assemblée?

Répondre

7

Selon this (merci PintSizedCat) pour Excel 2003 suivants se produit:

L'application Microsoft Office vérifie les propriétés du document personnalisés pour voir s'il y a du code managé extensions associées au document . Pour plus d'informations, voir Présentation des propriétés de document personnalisées.

S'il existe des extensions de code géré, l'application charge AddinLoader.dll. Il s'agit d'une DLL non managée constituant le composant loader pour Visual Studio 2005 Tools pour Office Second Edition runtime. Pour plus d'informations, voir Visual Studio Tools pour Office Runtime Présentation.

AddinLoader.dll charge le Framework .NET et commence la partie gérée des Visual Studio Tools pour Office Runtime.

Les Visual Studio Tools pour l'exécution Bureau crée un domaine d'application, définit la politique pour le domaine d'application ne pas faire confiance à la zone Poste de travail et vérifie la politique de sécurité d'accès au code magasin pour trouver une politique pour la assemblage de personnalisation. Le .NET Framework valide la preuve présentée par l'assembly par rapport à la stratégie. En cas d'échec, une erreur est déclenchée. Si cela réussit, le processus se poursuit.

Si la personnalisation utilise un manifeste de déploiement , les Visual Studio Tools pour exécution Office utilise pour vérifier les mises à jour de montage. Si des mises à jour sont nécessaires, elles sont effectuées maintenant. L'exécution Visual Studio Tools pour Office charge l'assembly dans le domaine d'application . L'exécution de Visual Studio Tools pour Office appelle le gestionnaire d'événement de démarrage dans votre assembly de personnalisation . Pour plus d'informations, voir Visual Studio Tools pour Office Project Événements.

Dans mon projet de classeur Excel de test J'ai deux propriétés personnalisées:

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

Je suppose que ceux-ci sont les propriétés qui dirigent le runtime VSTO vers mon assembly.

5

Tout cela est fait dans le registre, vous devriez être capable de trouver la clé dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel ou votre application équivalente. J'ai plus d'expérience avec COM Addins qui sont enregistrés ailleurs dans le Registre. Cette clé doit comporter un élément LoadBehaviour qui sert à déterminer le mode de chargement de l'application (2 est chargé manuellement, 3 est chargé automatiquement au démarrage).

Avez-vous un projet d'installation pour votre VSTO? À l'intérieur, vous pouvez voir la clé de Registre qui est définie, mais le programme d'installation va/devrait également enregistrer le VSTO dans GAC (bien que ne me prenez pas au mot comme je suis un peu la clé avec VSTO comme je l'ai dit).

J'espère que cela aide, je vais essayer de trouver plus d'informations pour vous.

Édition Vous devriez essayer de lire le http://msdn.microsoft.com/en-us/library/bb386298.aspx suivant qui vous donnera une explication de ce qu'est l'addin. C'est vraiment juste une enveloppe autour d'un hôte COM qui est chargé à partir du Registre et le VSTO en parle à l'aide d'un code d'interopérabilité.

Aussi utiles sont http://msdn.microsoft.com/en-us/library/23cw517s.aspx (Mise en route avec Visual Studio Tools pour Office, ne pas frapper parce qu'il dit Mise en route dans, il y a beaucoup d'informations utiles là-bas) et http://msdn.microsoft.com/en-us/library/hy7c6z9k.aspx (qui est liée de la première et une vue d'ensemble de VSTO Addins).

+0

J'ai jeté un coup d'oeil sous la clé reg et il n'y en a pas pour mon projet VSTO .Net (il y a un sous-répertoire 'Addins' avec 2 autres addins). Je n'ai pas encore de projet d'installation pour mon VSTO. – ng5000

+0

Il pourrait être sous HKEY_CURRENT_USER –

Questions connexes