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