コンパイルおよびインポートされたMEFモジュール内のビューをプロジェクトの自己作成モジュールディレクトリに.dllとしてアクセスしようとしています。ASP MVCインポートされたMEFモジュールからビューを見つけることができません
MEF DLLを作成した後、設定されたモジュールのURLに移動して、モジュールとそのコントロールが正しくインポートされているかどうかを確認します。コントローラが正しくActionView
をフェッチしようとしたときにすべてがうまく見えましたが、問題は.cshtmlファイルが見つからないのは私の考えです。
また、指定したフォルダに従ってモジュールビューのマッピングを処理するcustomViewEngineもあります。
customViewEngine
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Dependency_Injection_MEF_MVC.Components;
public class CustomViewEngine : RazorViewEngine
{
private List<string> _plugins = new List<string>();
public CustomViewEngine(List<string> pluginFolders)
{
//_plugins = pluginFolders;
DirectoryInfo d = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Modules/temp/"));//Assuming Test is your Folder
FileInfo[] Files = d.GetFiles("*.dll"); //Getting Text files
foreach (FileInfo file in Files)
{
_plugins.Add(file.Name.Substring(0, file.Name.IndexOf('.')));
}
ViewLocationFormats = GetViewLocations();
MasterLocationFormats = GetMasterLocations();
PartialViewLocationFormats = GetViewLocations();
}
public string[] GetViewLocations()
{
var views = new List<string>();
views.Add("~/Views/{0}");
_plugins.ForEach(plugin =>
views.Add("~/Modules/temp/" + plugin + "/Views/Home/{0}")
);
return views.ToArray();
}
public string[] GetMasterLocations()
{
var masterPages = new List<string>();
masterPages.Add("~/Views/Shared/{0}.cshtml");
_plugins.ForEach(plugin =>
masterPages.Add("~/Modules/temp/" + plugin + "/Views/Shared/{0}.cshtml")
);
return masterPages.ToArray();
}
}
私はそれが存在する必要がありますが、ビューエンジンは、それがあってもそれを見つけることができない場所、それが最後にチェック二つの場所があることがわかります、それを分析し、このエラーを取得するためのコード。
ので、TL:メインプロジェクトでMEF部品としてそれらを構成するsperateプロジェクトを作成し、DR
は、それらを構成した後、私はどこにモジュールのコントローラのWebページに移動してそれをテストしてみました上記のエラーで迎えられる。