Определить тип вызывающего проекта в библиотеке классов.net

Я создал библиотеку классов в Dotnet. Теперь я связал эту библиотеку с различными Клиентами, консольной программой, сервисом, проектом модульного тестирования и веб-сайтом ASP.NET. В некоторых частях мне нужно загрузить определенные файлы (например, шаблоны Excel) с диска. В этом случае расположение для разных проектов вызывающих абонентов отличается.

Итак, мой вопрос: каков наилучший способ узнать, какой тип проекта в настоящее время использует мою библиотеку?

Обнаружить клиент веб-сайта очень просто, мне просто нужно проверить, не является ли System.Web.HttpContext.Current значением Nothing. Но как насчет обнаружения других клиентов?

1 ответ

Решение

Даже если вам удастся обнаружить различные типы приложений сейчас, вы никогда не сможете быть уверены, будет ли эта логика работать в будущем.

Я думаю, что лучше не угадать и реализовать другое решение, например:

  1. использовать пути относительно корневого каталога текущего приложения, например, используя AppDomain.CurrentDomain.BaseDirectory ( MSDN)
  2. поместите расположение ваших файлов в файл конфигурации приложения (в appSettings раздел) и прочитайте его из вашей библиотеки, используя ConfigurationManager.AppSettings.Get() ( MSDN)
Другие вопросы по тегам