ファイルの内容を返すクラスライブラリプロジェクト(NotificationTemplate)があります。
public static class Template
{
public static string NotificatioEmail
{
get { return File.ReadAllText("Templates\\NotificatioEmail.cshtml"); }
}
}
このプロジェクトには、NotificatioEmail.cshtml
ファイルを含むフォルダTemplates
があります。
また、コンソールアプリとASP.NETMVCアプリの2つのアプリケーションがあります。ファイルはコンソールアプリで正常に返されましたが、MVCでエラーfile not found
が発生します。普遍的に書く方法は?
私はこれを試しました:
Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Templates",
"NotificatioEmail.cshtml")
ただし、BaseDirectory
にはbin
フォルダーは含まれません。
あなたが言ったように、BaseDirectory
はコンソールアプリで機能します。 MVCアプリケーションの場合は、代わりに RelativeSearchPath
を使用してください。
したがって、このコードを両方のプラットフォームで使用できます
var appDomain = System.AppDomain.CurrentDomain;
var basePath = appDomain.RelativeSearchPath ?? appDomain.BaseDirectory;
Path.Combine(basePath, "Templates", "NotificatioEmail.cshtml");