Comment obtenir le chemin de l’assemblage dans lequel se trouve le code ?
Remarque : Assembly.CodeBase est déprécié dans .NET Core/.NET 5+ : https://learn.microsoft.com/en-us/dotnet/api/system.reflection.assembly.codebase?view=net-5.0
Réponse originale :
J’ai défini la propriété suivante car nous l’utilisons souvent dans les tests unitaires.
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);
}
}
La propriété Assembly.Location donne parfois des résultats amusants lorsqu’on utilise NUnit (où les assemblages s’exécutent depuis un dossier temporaire), je préfère donc utiliser CodeBase qui vous donne le chemin au format URI, puis UriBuild.UnescapeDataString retire le File:// au début, et GetDirectoryName le convertit au format Windows normal.