2008-12-12 9 views
2

J'ai un processus de construction ennuyeux à partir de l'utilisation de l'API System.Addins avec ClickOnce. L'utilisation de System.Addins requiert une structure de répertoire spécifique et le projet principal ne fait pas référence aux adaptateurs, à la vue et à la sous-traitance directement, ce qui ne fonctionne pas correctement avec l'architecture ClickOnce. La partie gênante avec le processus de construction est que je dois copier, via un événement de post-construction, les fichiers .dll depuis les composants du complément dans le répertoire du projet d'application principal, puis les référencer manuellement depuis le projet principal , de sorte que ClickOnce les inclura. Tout d'abord, cela prend 2 itérations de construction pour le construire correctement, ensuite, il interfère avec le contrôle de la source (je dois exclure les fichiers dll du fichier source copié du contrôle source ou tout changement qui leur serait demandé). Donc, ma question est, y at-il un moyen de contourner ce hack? Quelque chose de plus élégant?System.Addin & ClickOnce

Répondre

-1

ClickOnce ne vous laisse pas installer le logiciel où vous voulez. Il va installer le binaire et les DLL dans les documents et les paramètres. Vous pouvez dans les propriétés de votre projet aller dans l'onglet Publier et sélectionnez Fichiers d'application pour sélectionner le fichier supplémentaire à inclure. Si les System.Addings requièrent dll dans un dossier spécifique relativement à votre assembly, vous pouvez simplement créer le dossier dans votre projet et inclure à partir d'ici les dll. Cela pourrait fonctionner. Sinon, je n'ai pas de "hack" ou autre solution, clickonce est super mais limité avec quelques fonctionnalités.

0

Merci pour votre contribution, je le fais actuellement comme vous l'avez mentionné; créer le dossier dans mon projet, et inclure les DLL dont j'ai besoin. Cela fonctionne, mais c'est une solution moche, et cela interfère avec le contrôle de la source. Je suis conscient des limites de ClickOnce, j'espérais qu'il y aurait un moyen de contourner le problème. Par exemple, j'ai lu quelque part que je peux utiliser des projets de déploiement pour créer les dépendances nécessaires dans une structure spécifique. Le problème avec cela est une fois qu'il est déployé dans le public, il n'y a pas de moyen facile (dans ClickOnce) pour mettre à jour ces dépendances.

+0

étant donné que l'ordre des publications n'est pas garanti de rester le même (réorganise sur la base des votes haut et bas), votre réponse à Daok serait mieux comme un commentaire à son poste plutôt que d'un nouveau poste. ne cherche pas à être critique, je veux juste aider SO newbies :). – codeConcussion

3

Je ne peux pas répondre complètement à votre question, mais il semble que vous créez des déploiements ClickOnce via Visual Studio. Je voudrais abandonner cette méthode et utiliser MageUI à la place. Il s'agit d'un exécutable autonome qui peut être trouvé dans le SDK de structure qui va générer vos fichiers manifestes de déploiement et d'application. Il est livré avec une version graphique (mageui.exe) et une version en ligne de commande (mage.exe). Mage ne peut pas se débarrasser de votre événement de post-construction, mais il devrait se débarrasser d'avoir à référencer les fichiers pour obtenir ClickOnce pour les voir.

0

La solution que j'utilise est d'avoir un seul dossier de sortie pour tous les projets. Chaque projet place ses propres fichiers dans le bon sous-dossier. Le projet bootstrapper de l'application place également ses dll dans le dossier de sortie (root). Lorsque vous créez ensuite un click-ones pour le bootstrapper, il prendra tout le contenu du dossier de sortie.

La partie la plus difficile est d'obtenir effectivement tous les dll au bon endroit (et ont tous les dll qu'une seule fois)

0

J'ai résolu ce problème en ajoutant les ensembles de pipelines comme contenu dans la structure principale de la solution. Pour ce faire, modifiez le dossier de sortie de (/ bin/debug/bin/Release) à quelque chose d'autre. J'ai utilisé ../lib sinon vous auriez un studio visuel ne peut pas référencer cette erreur de fichier.

Créez les dossiers de pipeline dans votre principale solution

  • \ AddInSideAdapters
  • \ AddInViews
  • \ Contrats
  • \ HostSideAdapters

Faites un clic droit sur chacun des dossiers et cliquez "Ajouter un élément existant" changez pour afficher tous les fichiers, puis naviguez jusqu'à votre ../lib (ou partout où vous avez la sortie s et) puis faites glisser le bouton Ajouter (cliquez sur la flèche vers le bas) et cliquez sur "Ajouter en tant que lien".

Cliquez avec le bouton droit sur chaque fichier et définissez-le sur Contenu. Cela va créer un fichier d'actualisation pointé vers vos assemblys et ils seront inclus dans le manifeste clickonce.