Déterminer l'emplacement de l'assemblage en cours d'exécution est une tâche fréquente dans le développement .NET. Ce chemin est crucial pour accéder aux ressources par rapport au répertoire de l'assemblée. Alors que les tests unitaires nécessitent souvent ces informations, ses utilisations s'étendent à divers autres scénarios.
Plusieurs méthodes existent pour obtenir le chemin d'assemblage, chacune avec des limites potentielles:
Environment.CurrentDirectory
: Renvoie le répertoire de travail actuel de l'application, qui pourrait différer de l'emplacement réel de l'assembly. Assembly.GetAssembly(Type).Location
: Fournit le chemin de l'assemblage contenant un type spécifié. Cela peut parfois indiquer un emplacement temporaire, en particulier dans les cadres de test. Assembly.GetExecutingAssembly().Location
: Similaire à la méthode précédente, cela renvoie le chemin de l'assemblage exécutif, mais peut également produire un chemin temporaire dans certains contextes de test. Pour surmonter les incohérences des approches ci-dessus, une propriété personnalisée plus fiable est recommandée:
public static string AssemblyDirectory { get { string codeBase = Assembly.GetExecutingAssembly().CodeBase; UriBuilder uri = new UriBuilder(codeBase); string path = Uri.UnescapeDataString(uri.Path); return Path.GetDirectoryName(path); } }
Cette méthode utilise la propriété CodeBase
, qui fournit l'URI de l'assembly. L'URI est ensuite analysé, non recommandé et le chemin du répertoire est extrait à l'aide de Path.GetDirectoryName
. Cette approche garantit des résultats cohérents, même dans divers environnements de test unitaires. Cela fournit une solution fiable pour récupérer l'emplacement de l'assemblage quel que soit le contexte d'exécution.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!