У меня есть общая библиотека отчетов, которая используется как в Windows, так и в Интернете. Сейчас я пытаюсь переместить программы Windows в профиль клиента .NET 4, поэтому необходимо избегать ссылок на System.Web.
В некоторых точках кода необходимо получить каталог веб-сайта или каталог dll. Я использовал код примерно так:
string path;
if (HttpContext.Current != null)
{
path = HttpContext.Current.Server.MapPath("default.aspx");
}
else
{
path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
}
Есть ли способ использовать отражение или подобное, чтобы избежать ссылки на System.Web, чтобы я все еще мог найти подходящий путь? Если да, то как мне это сделать?
Есть ли альтернативы?
EDIT
Причина, по которой я хочу это сделать, заключается в том, что я использую систему отчетов, которая может взять файл таблицы стилей и применить его к отчетам (я делаю это для всех отчетов). В качестве настройки, которую я ранее имел в самой dll, mystylesheet.repss. Поэтому, если я хочу изменить стили, я просто изменяю их в dll, и они применяются ко всем отчетам. Тогда это был просто случай сброса соответствующего файла repss в корневой каталог Windows и веб-сайт. И найти подходящий путь к ним.
Попытка использовать относительные пути с DLL приводит к проблемам. Передача отчета. \ Mystylesheet.repss отлично работает в Windows, но попытка ~ / mystylesheet.repss. \ Mystylesheet.repss или чего-либо еще, что я могу придумать из dll в сети, заканчивается поиском неправильного каталога "c: \ windows \ system32 \ Inetsrv».
Я мог бы перенести настройку в каждое отдельное окно и веб-приложение и передать ее с обработанным полным путем, кажется, что задом наперед сделать это так, когда это действительно внутренняя настройка для DLL.
Надеюсь, что все это имело смысл.