Il y a plusieurs questions liées sur stackoverflow mais soit ma situation est différente, soit je suis trop bête pour les relier à la situation. J'espère que quelqu'un pourra m'aider avec ça. De plus, je ne suis même pas vraiment un développeur .NET donc je m'excuse d'avance pour toute mauvaise utilisation de la terminologie.Directory.SetCurrentDirectory throws PathTooLongException
Mon scénario est le suivant: L'outil utilisé pour déployer notre application .net (One Click?) Le place dans un répertoire dont le nom complet dépasse 300 caractères. L'application utilise un composant tiers - appelons-le dbstore - qui traite le fichier spécifié qui réside dans le répertoire de déploiement de l'application.
Jusqu'à présent, nous utilisions Assembly.GetExecutingAssembly().GetName().CodeBase
pour construire le nom complet du fichier à transmettre à dbstore. Mais dbstore utilise des API de style ancien et échoue lorsqu'il tente d'ouvrir le fichier.
Étant donné que le composant dbstore ne devrait pas changer rapidement, il a été recommandé que l'application chdir dans le répertoire de déploiement et lui transmette un nom de chemin relatif dans le répertoire courant. C'est aussi l'approche décrite dans la réponse acceptée PathTooLongException in C# code
Cependant, je trouve que Directory.SetCurrentDirectory
lance également PathTooLongException
. Cela se produit même lorsque j'utilise un nom de chemin UNC, par exemple un nom commençant par \\?\0000000000000\...
Est-ce que je fais quelque chose de fondamentalement faux? Y at-il une autre fonction à utiliser?
EDIT: Il semble qu'il n'y ait aucun moyen de réaliser ce que je cherche. Tout ce que je peux dire, il n'y a aucun moyen de définir un répertoire long sur un chemin long.
Il n'y a pas '' Environment.SetCurrentDirectory' mais la propriété Environment.CurrentDirectory' peut être attribué. Je reçois le même résultat avec ça. Je reçois également la même exception après la limite de longueur de nom de fichier même si je change de sous-dossier après sous-dossier, quelle que soit la fonction que j'utilise. –
Quel est votre système d'exploitation? –
Salut Igor Je cours cela sur Windows XP SP3. –