У меня есть фрагмент кода, который загружает некоторые сборки из текущего исполняемого каталога во время выполнения. Код является частью библиотеки, которая может быть размещена в консольном приложении/службе Windows/веб-приложении aspnet и т. Д.Как получить текущий исполняемый каталог независимо от типа хоста
Есть ли один вызов API, который будет предоставлять текущий каталог, из которого выполняется код? Для консоли службы/Windows AppDomain.CurrentDomain.BaseDirectory;
возвращает правильный путь, но один и тот же вызов в приложении ASPNET возвращает путь к виртуальному корню вместо пути к [virtualroot] \ бен каталог веб-приложения.
Для ASPNET AppDomain.CurrentDomain.SetupInformation.PrivateBinPath;
возвращает то, что я хочу.
Я мог бы сделать проверку, как в следующем, так что я получаю правильный путь, независимо от хоста:
string path = AppDomain.CurrentDomain.SetupInformation.PrivateBinPath ??
AppDomain.CurrentDomain.BaseDirectory;
Такого рода эвристика кажется немного хаком, и я надеюсь, есть один вызов API, который обеспечит ожидаемые результаты
Это приведет меня в правильном направлении! Это работает: System.IO.Path.GetDirectoryName (новый Uri (Assembly.GetExecutingAssembly(). CodeBase) .AbsolutePath); –
Да, конечно, я забыл, что вам нужен только каталог. – Heiner