2010-07-13 5 views
1

Je rencontre un problème lors du déploiement d'une application ClickOnce. J'utilise Visual Studio 2008. J'ai un fichier DLL référencé qui n'est pas déployé.Déploiement ClickOnce, mais un fichier DLL référencé n'est pas en cours de déploiement

Dans les propriétés du projet -> Publier onglet ->Fichiers d'application

Le fichier DLL référencé ne semble pas, donc je ne peux pas ajouter.

Le fichier DLL n'est pas utilisé directement dans mon code, mais il est utilisé par un autre fichier DLL que je référence.

Y at-il un moyen de modifier manuellement quelque chose pour m'assurer que le fichier DLL est copié?

Il peut être utile de mentionner que le fichier DLL est un fichier DLL tiers de DevExpress: DevExpress.XtraPrinting.dll. Je pense qu'il peut être chargé comme un plugin par l'un des autres fichiers DLL DevExpress.

Répondre

2

Je sais ce problème assez bien et là quelques petites choses à faire pour y remédier:

  1. Ajouter une référence à la dll DevExpress.XtraPrinting.dll en vous projet.
  2. Dans la section références définissez le DevExpress.XtraPrinting.dll copier Local = true (cela semble aider VS se rappeler la dll plus)
  3. Pour forcer VS à savoir que vous avez besoin de cette dll, vous devrez l'utiliser . Cela peut être fait en instanciant une instance d'ExportOptions ou un objet similaire. par exemple.

    var options = new ExportOptions(); options.Html.Title = "du texte";

  4. Maintenant, assurez-vous de forcer le statut de publication à "Inclure" dans la section ApplicationFiles de l'onglet Publier.

Cela devrait résoudre votre problème.

+1

Merci pour votre aide. Cependant, la DLL n'apparaît toujours pas dans la boîte des fichiers de l'application (même avec show all selected). Mes autres dev dev dll apparaissent avec des exclamations à côté d'eux. J'ai utilisé votre code dans mon formulaire principal, y a-t-il autre chose que je devrais vérifier? – bplus

+0

J'ai mis à jour la réponse avec une autre étape (étape 2) en réglant normalement Copy Local = true. – FryHard

0

Ajoutez le fichier DLL tiers à votre projet (cliquez avec le bouton droit sur le projet, ajoutez un élément existant ...). Définissez 'Build action' sur 'None' et réglez 'Copy to Output Directory' sur 'Do not copy'.

Supprimez votre référence à ce fichier DLL. Re-ajoutez la référence et accédez à ce fichier DLL dans votre projet et sélectionnez-le.

Sur la référence, définissez 'Copy Local' sur 'True'.

Maintenant, il devrait apparaître dans les fichiers de l'application, car votre code référence une copie locale, et il est configuré pour le déployer.

Notez que cela ne fonctionne pas pour tous les assemblages; certains doivent juste être installés dans le GAC. Mais c'est gratuit d'essayer. S'il doit être dans le GAC, il vous dira quand vous essayez de l'installer.

0

Merci pour les réponses - mais j'ai trouvé que l'édition manuelle du fichier csproj a fonctionné pour moi.Pour quelqu'un d'autre avec ce problème, vous devrez peut-être ajouter votre dll que vous voulez déployé comme ceci:

<PublishFile Include="DevExpress.XtraPrinting.v9.3"> 
    <Visible>False</Visible> 
    <Group> 
    </Group> 
    <TargetPath> 
    </TargetPath> 
    <PublishState>Include</PublishState> 
    <IncludeHash>True</IncludeHash> 
    <FileType>Assembly</FileType> 
</PublishFile> 

Assurez-vous également que vous avez dans votre section Références:

<Reference Include="DevExpress.XtraPrinting.v9.3, Version=9.3.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\SomePath\DevExpress.XtraPrinting.v9.3.dll</HintPath> 
</Reference> 

Je voudrais aussi souligner que la solution de RobinDotNet fonctionne également.

+0

Je serais très surpris si les instructions que j'ai posté ne marchent pas pour vous - juste curieux si vous les avez essayés. Ils sont éprouvés dans tous les autres cas où je les ai postés ici ou sur les forums, donc s'il y a un problème, il serait utile de le savoir. – RobinDotNet

+0

Je les ai essayés dès que je les ai lus. En fait, ils ont fonctionné (je vais éditer ma réponse dans une seconde) mais je me suis retrouvé dans une chaîne de dépendance DLL que j'ai dû utiliser ". Net Depends" pour sortir. Pendant ce processus, j'ai remarqué dans le fichier my csproj que les références ne sont pas écrites. Donc, je retire de votre solution et juste essayé d'éditer le fichier manuellement et cela a fonctionné. Merci encore d'avoir pris le temps de réexaminer, j'aurais dû préciser que votre réponse fonctionne aussi. – bplus

+0

Pas de soucis, merci de me le faire savoir. Je suis juste content que ça marche. :-) – RobinDotNet

Questions connexes