2010-04-05 5 views
1

У меня есть проект библиотеки классов, который содержит некоторые файлы содержимого, настроенные с помощью действия копирования «Копировать, если новое». Это приводит к копированию файлов в папку под ...\bin\ для каждого проекта в решении. В этом же решении у меня есть веб-проект ASP.NET (кстати, это MVC). В библиотеке у меня есть статический конструктор, который загружает файлы в структуры данных, доступные веб-проекту. Раньше я включал контент в качестве встроенного ресурса. Теперь я должен быть в состоянии заменить их без перекомпиляции. Я хочу, чтобы получить доступ к данным в трех различных контекстах:ASP.NET - Доступ к скопированному контенту

  1. модульного тестирования сборки библиотеки
  2. Отладка веб-приложения
  3. хостинг сайта в IIS

для модульного тестирования, Environment.CurrentDirectory указывает на путь, содержащий скопированный контент. Однако при отладке он указывает на C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE. Я также посмотрел Assembly.GetExecutingAssembly().Location, который указывает на C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\c44f9da4\9238ccc\assembly\dl3\eb4c23b4\9bd39460_f7d4ca01\. Мне нужно физическое расположение папки webroot \bin, но поскольку я в статическом конструкторе в проекте библиотеки, у меня нет доступа к Request.PhysicalApplicationPath.

Есть ли какая-либо другая переменная или структура среды, где я всегда могу найти свои «Копировать, если новые» файлы?

ответ

1

Assembly.Location действительно указывает на местоположение сборки после того, как была скопирована тень.

Однако, что государства MSDN страницы:

Чтобы получить место до того, как файл был скопирован с тенью, используют CodeBase property.

+0

Удивительный, что кажется, делает трюк. –

Смежные вопросы