У меня есть веб-сайт ASP.NET, и я хочу найти, что / мусорное ведро / папка [Configuration] использует внешний инструмент (EXE-файл). Когда я использую отражение для получения местоположения блоков вызова, оно возвращает что-то подобное:
C:\Windows\Microsoft.NET\Framework\\...\Temporary ASP.NET Files\a1388a5e\\...\my.dll
Так как каждый dll имеет свой собственный каталог под временными Файлами ASP.NET, которые это приводит к сбою для меня.
Как я могу получить местоположение скомпилированной двоичной папки, где dll's и .exe (т.е. мусорное ведро/) вместо временного кэша asp.net?
Примечания
Вы можете попробовать (взято из Как получить: получить каталог приложений ):
Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
Я установил быстрый тест с:
В веб-приложении я создал страницу, которая вызвала следующий метод из проекта библиотеки:
using System.IO;
using System.Reflection;
пространство имен TestHelpers {
открытый класс ClassHelpers {
общедоступная статическая строка PathToBin () {
return Path.GetDirectoryName (
Assembly.GetExecutingAssembly (). GetName (). CodeBase) ;
}
}
}
Это привело к следующему выводу на странице:
файл: \ C: \ Users \ Имя пользователя \ Documents \ Visual Studio 2008 \ Websites \ Решение \ Проект \ bin
Этого я и ожидал.
Есть ли причина не просто делать
Server.MapPath("~/bin");
?