2009-02-25 8 views
2

J'ai une application WinForms que je déploie à l'aide de ClickOnce. Dans le projet d'application, j'ai des fichiers marqués comme contenu qui est également marqué comme "fichier de données" dans la boîte de dialogue Fichiers d'application dans les paramètres de publication. J'ai aussi des fichiers de contenu marqués "Inclure Auto".Fichiers de données non déployés avec l'application ClickOnce

Lorsque je publie, installez l'application, puis exécutez-la immédiatement au démarrage avec une exception DirectoryNotFoundException (pile complète ci-dessous).

En regardant dans le dossier de l'application, je peux trouver tous les fichiers qui ont été marqués "Inclure Auto", soigneusement placés avec les exécutables. Les fichiers marqués comme "fichier de données" n'est pas installé (j'ai vérifié les dossiers exécutables et le dossier de données).

Notez que la publication et l'installation s'effectuent à partir d'un dossier sur mon ordinateur local, et non via un site Web.

Si je change de "fichier de données" à l'inclusion standard sur tous les fichiers de contenu, tout fonctionne comme un charme. Je suis (gasp) Windows XP SP3 et .Net 3.5 SP1.

System.IO.DirectoryNotFoundException était unhandled message = "Le système ne peut pas trouver le chemin d'accès spécifié (Exception de HRESULT: 0x80070003)." Source = "mscorlib" StackTrace: à System.Deployment.Internal.Isolation. IActContext.SetApplicationRunningState (UInt32 dwFlags, UInt32 ulState, UInt32 & ulDisposition) à System.ActivationContext.SetApplicationState (ApplicationState s) à System.AppDomain.SetupDomainForApplication (ActivationContext ActivationContext, String [] activationData) à System.AppDomain.SetupApplicationHelper (Evidence providedSecurityInfo, Evidence creatorsSecurityInfo, ApplicationIdentity appIdentity, ActivationContext ActivationContext, String [] activationData) à System.AppDomain.SetDomainManager (Evidence providedSecurityInfo, Evidence creatorsSecurityInfo, IntPtr parentSecurityDescriptor, Boolean publishAppDomain) à System.AppDomain.SetDefaultDomainManager (String fullName, String [] manifestPaths, String [] activationData) InnerException:

Répondre

3

Après plus d'essais et d'erreurs, j'ai trouvé que l'exception DirectoryNotFound se produit lorsque mes fichiers de données se trouvent dans des sous-dossiers d'un sous-dossier. Si les fichiers de données se trouvent dans la racine du projet ou dans un sous-dossier de premier niveau, tout fonctionne comme prévu.

Le problème semble également être lié au fait que dans certains de ces sous-dossiers, j'avais des fichiers marqués comme Inclure et certains comme Données. Cela provoque probablement une certaine confusion lors du déploiement dans lequel les fichiers de données ne sont pas déployés. Enfin, ce que je devais faire pour obtenir les choses comme je le voulais était de désinstaller toute version précédente de l'application. Ensuite, organiser mes fichiers de données dans le projet comme ceci:

 
\Testfiles\Filegroup1\data1.txt 
\Testfiles\Filegroup1\data2.txt 
\Testfiles\Filegroup2\moredata1.txt 
\Testfiles\Filegroup2\moredata2.txt 

Ensuite, je marque tous les fichiers dans chaque dossier comme des données. Maintenant tout se déploie bien et dandy et le loader ne plante pas au démarrage.

+0

Cela a fonctionné pour moi aujourd'hui. Définissez l'action de construction sur "Contenu" et "Copier dans le répertoire de sortie" sur "Toujours copier". – MansoorShaikh

Questions connexes