J'ai un site Web ASP.NET et je souhaite trouver le dossier /bin/[Configuration] pour utiliser un outil externe (un fichier exe). Lorsque j'utilise la réflexion pour obtenir l'emplacement des assemblys appelants, cela renvoie quelque chose de similaire à :
C:\Windows\Microsoft.NET\Framework\\...\Temporary ASP.NET Files\a1388a5e\\...\my.dll
Étant donné que chaque dll a son propre répertoire sous les fichiers temporaires ASP.NET, cela échoue pour moi.
Comment puis-je obtenir l'emplacement du dossier binaire compilé où se trouvent les dll et le .exe (c'est-à-dire bin/) au lieu du cache temporaire d'asp.net ?
Notes
- Ce code se trouve dans une bibliothèque de prise en charge qui peut être appelée à partir de sites Web ASP.NET ou d'autres applications console/Windows.
3 réponses
Vous pouvez essayer (extrait de Comment : obtenir le répertoire des applications) :
Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
J'ai mis en place un test rapide avec :
- Un projet d'application Web s'exécutant sous le serveur de développement VS (site compilé, répertoire /bin, etc.).
- Un projet de bibliothèque de classes, référencé par le WA.
Dans l'application Web, j'ai créé une page qui a appelé la méthode suivante à partir du projet de bibliothèque :
using System.IO; using System.Reflection; namespace TestHelpers { public class ClassHelpers { public static string PathToBin() { return Path.GetDirectoryName( Assembly.GetExecutingAssembly().GetName().CodeBase); } } }
Cela a donné le résultat suivant sur la page :
file:\C:\Users\ Nom d'utilisateur \Documents\Visual Studio 2008\Websites\ Solution \ Projet \bin
C'est ce à quoi je m'attendrais.
Server.MapPath("~\bin")
N'importe quelle raison de ne pas simplement faire
Server.MapPath("~/bin");
?
Questions connexes
Questions liées
De nouvelles questions
c#
C # (prononcé "see sharp") est un langage de programmation multi-paradigme de haut niveau, typé statiquement développé par Microsoft. Le code C # cible généralement la famille d'outils et d'exécutions Microsoft .NET, notamment le .NET Framework, .NET Core et Xamarin. Utilisez cette balise pour les questions sur le code écrit en C # ou en spécification formelle de C #.