2017-09-08 7 views
0

J'ai créé une application WinForms qui inclut le code pour trouver le bureau de l'utilisateur et effectuer 3 tâches: 1. Créez un dossier 2. Lire un fichier .csv 3. Sortie certaines données à un fichier .csv sur le bureau.C# Déploiement ClickOnce Mapping à mon bureau lecteur

J'utilise le code ci-dessous pour trouver le bureau de l'utilisateur

string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 

je le déploiement ClickOnce pour installer le programme sur notre lecteur réseau. Le programme s'installe avec succès, mais chaque fois que quelqu'un essaie d'exécuter le programme à partir de son terminal, il reçoit un message d'erreur indiquant "Le nom du répertoire n'est pas valide" et il référence mon bureau et non celui de l'utilisateur.

Comment changer mon code ou la méthode de déploiement afin qu'il fasse référence au bureau de l'utilisateur?

+0

Vérifiez ma réponse ci-dessous. – Znaneswar

+1

Pouvez-vous préciser exactement "quand" cette erreur est levée? Vos questions parlent de "quelqu'un tente d'installer", mais votre message d'erreur fait référence à un code (ce qui implique, exception est levée au moment de l'exécution?). Veuillez mettre à jour la question pour clarifier cela. – Subbu

+0

@Znaneswar votre réponse ne fonctionnera pas parce que le programme fait référence à un répertoire qui ne fait pas partie de l'emplacement du réseau ou de l'autre utilisateur. Si le chemin d'accès au fichier est situé dans le répertoire '\ Users \', je m'attends à ce que ça plante aussi. – thanatorr

Répondre

0

Si le répertoire essayer invalide sa création Essayez avec ce code

string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
string extension = ".log"; filePath += @"\Error Log\" + extension; 
    if (!Directory.Exists(filePath)) { 
Directory.CreateDirectory(filePath); 
} 
0

J'ai fait les modifications suivantes à mon code et cela a fonctionné au besoin:

string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);