2011-04-19 4 views
2

Je travaille sur des tests unitaires qui testent une méthode dans une application qui produit un fichier. J'ai donc décidé de mettre un fichier attendu dans un répertoire appelé Resource/Empower /. Le dossier de ressources se trouve au même niveau que le dossier bin du projet Unit Test.Chemin relatif dans l'assembly d'exécution

Maintenant, ce que je veux faire est d'obtenir le chemin du nom de fichier. Je ne peux pas coder en dur parce que je ne sais pas exactement sur les lecteurs sur le serveur de construction.

Comment puis-je obtenir le chemin relatif du fichier. Disons si le nom de fichier est expectedMasterFileSetUp.txt?

Je veux le chemin Resource/Empower/ExpectedMasterFileSetUp.txt

Répondre

1

Utilisez Path.GetDirectoryName() sur le résultat de new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath alors Path.Combine() votre chemin relatif à l'extrémité.

3

Pourquoi utiliser un URI?

string AbsolutePathRelativeToEntryPointLocation(string relativePath) 
{ 
    Assembly entryPoint = Assembly.GetEntryAssembly() ; 
    string basePath  = Path.GetDirectoryName(entryPoint.Location) ; 
    string combinedPath = Path.Combine(basePath , relativePath)  ; 
    string canonicalPath = Path.GetFullPath(combinedPath) ; 

    return canonicalPath ; 
} 
+0

Quel est le point de GetFullPath ici? Path.Combine ne renvoie-t-il pas déjà le chemin d'accès complet, ou est-ce que cela permet de développer automatiquement des choses comme '..'? – MarqueIV