Путь к файлу в библиотеке классов
У меня есть проект класса libary (NotificationTemplate), который возвращает содержимое файла:
public static class Template
{
public static string NotificatioEmail
{
get { return File.ReadAllText("Templates\\NotificatioEmail.cshtml"); }
}
}
В этом проекте находится папка Templates
с файлом NotificatioEmail.cshtml
.
Кроме того, у меня есть два приложения: консольное приложение и приложение ASP.NET MVC. Файл верен в консольном приложении, но в MVC я получаю ошибку file not found
. Как писать повсеместно?
Я попробовал это:
Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Templates",
"NotificatioEmail.cshtml")
но BaseDirectory
не включают папку bin
.
Ответы
Ответ 1
Как вы сказали, BaseDirectory
работает в консольных приложениях. Для приложений MVC используйте RelativeSearchPath
.
Итак, вы можете использовать этот код для обеих платформ
var appDomain = System.AppDomain.CurrentDomain;
var basePath = appDomain.RelativeSearchPath ?? appDomain.BaseDirectory;
Path.Combine(basePath, "Templates", "NotificatioEmail.cshtml");