0
我试图在编译和导入的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:博士
创建sperate项目,它们组成为一个主要项目MEF部分,作曲之后,我试图通过导航到模块的控制器的网页来测试它在哪里我迎接上面的错误。