2017-09-12 9 views
0

J'ai trouvé de nombreux articles sur StackOverflow et ailleurs indiquant que si vous vouliez afficher vos fichiers dans le dossier bin en utilisant ClickOnce, vous devriez définir lePublier des fichiers dans le dossier bin lorsque les fichiers source se trouvent dans un sous-dossier avec ClickOnce avec l'application WPF

BuildAction: Content

CopyToOuputDirectory: Copy if newer

mais certains de mes binaires sont situés dans un sous-dossier Dependencies situé à la racine de mon projet et quand je publie le contenu, ils sont émis au lieu d'être dans le <wpf app folder> provoquant le dysfonctionnement de mon application.

Toutes les suggestions sur la façon dont je peux changer cela pour forcer ClickOnce à produire des fichiers spécifiques à <wpf app folder>\ indépendamment de l'emplacement des Source files.

+0

Cliquez sur le projet -> Propriétés -> Construire -> Sortie -> Chemin de sortie, fin ajoutez simplement ../Debug au lieu de Debug, ou un autre chemin relatif – sTrenat

+0

Le problème n'est pas avec l'emplacement de construction mais avec les sorties ClickOnce fichiers qui sont contenus dans les sous-dossiers dans le même sous-dossier lors de l'installation lorsque je veux copier des fichiers spécifiques dans le dossier racine de l'application. – Thierry

Répondre

0

J'ai finalement trouvé une solution de rechange que je n'aime pas mais je dois continuer. Pour contourner ce problème, j'ai ajouté les bibliothèques requises à la racine de mon projet en tant que liens et toujours définir le BuildAction à Content et CopyToOutputDirectory à.

Je pensais que je l'expliquerais avec un exemple car cela pourrait avoir un peu plus de sens.

Chemin du projet: C: \ Work \ MyApp et il contient les sous-dossiers suivants:

D: \ Work \ MyApp \ MyApp.csproj D: \ Work \ MyApp \ MyApp.xaml .. D: \ Work \ MyApp \ Bin \ Déboguer D: \ Work \ MyApp \ Bin \ Libérer D: \ Work \ MyApp \ Bin \ Libérer \ MyApp.exe D: \ Work \ MyApp \ Depedencies \ LibA. dll D: \ Work \ MyApp \ Depedencies \ LibB.dll etc ...

Les bibliothèques sont des outils tiers et sont en fait dans leur propre dossier:

D: \ Tools \ MyThirdPartyLib \ Distributation \ LibA.dll D: \ Tools \ MyThirdPartyLib \ Distributation \ LibB.dll

En ayant les bibliothèques dans D: \ Work \ MyApp \ dépendances ne fonctionne pas comme ClickOnce installerait l'application dans:

C: \ Users \\ AppData \ local \ Apps \ 2.0 ... \ MyApp.exe

et installé les fichiers situés dans le sous-dossier dépendances:

C: \ Users \\ AppData \ Local \ Apps \ ... \ 2.0 dépendances \ LibA.dll C: \ Users \\ AppData \ Local \ Apps \ 2.0 ... \ dépendances \ LibB.dll

qui a causé mon application à ne pas travailler.

Pour contourner, je fini par ajouter LibA.dll et LibB.dll à la racine de mon projet comme « fichiers liés » et définir leurs BuildAction et CopyToOutputDirectory mais pas en pointant les fichiers liés à

D : \ Work \ MyApp \ Dépendances \ LibA.dll D: \ Work \ MyApp \ Depedencies \ LibB.dll

mais les signaler:

D: \ Tools \ MyThirdPartyLib \ Distributation \ LibA.dll D: \ Tools \ MyThirdPartyLib \ Distributation \ Libb .dll

Et cela semble avoir fait l'affaire. Mon seul boeuf à ce sujet est que maintenant j'ai 10 fichiers impairs répertoriés dans la racine de mon projet en studio visuel que je n'aime pas:

MyApp Solution 
    - MyApp Project 
     - MyApp.csproj 
     - MyApp.xaml 
     - ... 
     - LibA.dll 
     - LibB.dll 
     - ... 

mais il faudra le faire pour l'instant.

Espérons que cela aide les autres!