MEF Je suis en train d'accéder à une vue de l'intérieur d'un module compilé et MEF importé en tant que .dll dans un répertoire Modules auto créé dans mon projet. Après avoir composé les DLL MEF, j'essaie de naviguer vers l'URL du module configuré pour vérifier si le module et ses contrôles ont été correctement importés et si tout semblait bien, car le contrôleur essayait d'aller chercher le bon ActionView
mais le problème est le .cshtml fichier ne peut pas être trouvé est ce que je pense.ASP MVC Vous ne trouvez pas vues depuis le module importé
I ont également une customViewEngine qui gère le mappage des vues module selon le dossier spécifié.
Le code pour 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();
}
}
Je reçois cette erreur, l'analyser, je peux voir que les deux derniers endroits VÉRIFIÉ est l'endroit où il doit se trouver, mais le moteur de View ne parvient pas à trouver, même si elle est là .
donc tl: dr
créé des projets sperate les Compose de pièces MEF dans un projet principal, après les composer j'ai essayé de le tester en accédant à la page Web du contrôleur du module où je suis accueilli avec l'erreur ci-dessus.