17

ファイルのコンテンツを返すクラスライブラリプロジェクト(NotificationTemplate)があります。

public static class Template
{
    public static string NotificatioEmail
    {
        get { return File.ReadAllText("Templates\\NotificatioEmail.cshtml"); }
    }
}

このプロジェクトには、ファイルのあるフォルダTemplatesがありNotificatioEmail.cshtmlます。

また、コンソールアプリとASP.NETMVCアプリの2つのアプリケーションがあります。コンソールアプリではファイルは正常に返されましたが、MVCではエラーが発生しますfile not found。普遍的に書く方法は?
私はこれを試しました:

Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Templates",
             "NotificatioEmail.cshtml")

ただし、フォルダBaseDirectoryは含めないでください。bin

4

1 に答える 1

42

あなたが言ったBaseDirectoryように、コンソールアプリで動作します。MVCアプリケーションの場合は、RelativeSearchPath代わりにを使用してください。

したがって、このコードを両方のプラットフォームで使用できます

var appDomain = System.AppDomain.CurrentDomain;
var basePath = appDomain.RelativeSearchPath ?? appDomain.BaseDirectory;
Path.Combine(basePath, "Templates", "NotificatioEmail.cshtml");
于 2013-03-14T05:36:35.553 に答える