2009-10-15 7 views
0

Je distribue une application via ClickOnce (fonctionne 'en ligne' sur le réseau '), inclus dans l'application sont un couple de fichiers texte qui sont copiés à l'emplacement de déploiement correctement lors de la publication.Récupérez le chemin d'accès aux fichiers inclus avec l'application ClickOnce?

Je tente de se référer au chemin de ces fichiers Programatically:

Dim t As New HTMLTemplate("ReportTemplates\IncidentDetailMain.txt") 

Parfois cela fonctionne, parfois l'application semble regarder dans les utilisateurs dossier Mes documents, ce qui a DirectoryNotFoundException.

Quelqu'un peut-il expliquer ce qui se passe ici?

Répondre

3

La meilleure façon est d'utiliser

System.Windows.Forms.Application.StartupPath 

qui vous donnera l'uri dans le dossier où le fichier exécutable du l'application est. Vous pouvez ensuite utiliser les fichiers de référence qui dans votre cas doivent toujours être dans le même chemin relatif à l'exécutable.

MSDN: Application.StartupPath

Ceci peut être utilisé aussi bien pour des applications WinForms et WPF. System.Environment.CurrentDirectory peut changer pendant la durée de vie de l'application si vous laissez l'utilisateur ouvrir/enregistrer des fichiers, etc. - donc le StartupPath est plus sûr.

Ainsi, votre code final serait:

string filePath = Path.Combine(
    System.Windows.Forms.Application.StartupPath, 
    "ReportTemplates\IncidentDetailMain.txt"); 
.. = new HTMLTemplate(filePath); 
1

Le moyen le plus sûr de le faire est d'obtenir le chemin de votre exe et ensuite l'utiliser comme base.

Vous pouvez le faire en utilisant l'emplacement suivant, System.Environment.CurrentDirectory

+0

Merci, il semble encore travailler, je vais attendre et voir si les erreurs se reproduisent. – Simon

+0

Oui, le problème se reproduit par intermittence, j'espère que la réponse @ andhammar ci-dessous va résoudre. – Simon

+0

Si vous utilisez CurrentDirectory, vous devez le faire au démarrage de l'application et l'enregistrer. ça PEUT CHANGER !!! par exemple l'ouverture d'une boîte de dialogue de fichier et la navigation vers un dossier changera réellement CurrentDirectory –

Questions connexes