2010-06-25 30 views
0

Je télécharge un fichier .msi à l'aide du contrôle fileupload dans un emplacement central. Maintenant, j'ai besoin d'obtenir les informations de version de ce fichier. J'utilise le code suivant.Récupère les informations de version d'un fichier de correctif dans C#

FileVersionInfo patchFile = FileVersionInfo.GetVersionInfo(completeFilePath) 

completeFilePath est le chemin complet du fichier téléchargé. Ce code casse et renvoie l'exception fichier non trouvé. Cependant, si je regarde dans le répertoire physique, le fichier existe. Ai-je manqué quelque chose ou devrais-je télécharger de nouveau ce fichier téléchargé dans un emplacement temporaire, puis extraire les informations de version de ce fichier.

La deuxième option que j'avais était d'obtenir des informations de version avant de télécharger le fichier. Dans ce cas, je ne suis pas en mesure d'obtenir le chemin complet de ce fichier de correctif car le contrôle fileupload ne donne que le nom de fichier et non l'emplacement complet.

Suggérez comment procéder.

Répondre

0

Je pense que le problème est dans la façon de définir « completeFilePath »

Rappelez-vous que si le completeFilePath est une chaîne non littérale, alors vous devez échapper les caractères spéciaux. Par exemple:. [string filePath = "C:\\Windows\\FolderName\\FileName.txt";] (notez le caractère d'échappement()

Une autre option est d'utiliser la chaîne littérale qui vous permet d'utiliser les caractères spéciaux sans avoir à utiliser le caractère d'échappement est un exemple:

[string filePath = @""C:\Windows\FolderName\FileName.txt"";] 
?

Si cela ne fonctionne toujours pas, alors pourriez-vous s'il vous plaît poster comment vous saisissez ce

+0

c'est la façon dont il apparaît dans quickwatch.completeFilePath = D: \ test \ NUnit_b2e5d79c-7512-40ad-bcb6-f0b16fe9f7b8.msi. Ce fichier existe à cet endroit – Rohit

+0

@Rohit: Il semble moi que ma réponse affichée est correcte. Le "FileVersionInfo.GetVersionInfo" est à l'exception d'un paramètre de chaîne. quickWatch.completeFilePath est une chaîne mais vous devez la modifier pour les caractères spéciaux ('\') probablement dans une autre chaîne temporaire et transmettre la chaîne temporaire à la méthode "FileVersionInfo.GetVersionInfo". – VoodooChild