我有一个用.net core 2.1编写的Web应用程序(Firstapplication),并且运行良好。
现在,我想从另一个应用程序创建的dll文件中添加运行时视图。
我想取“ SeconApplication.web.Views.dll”并将其放在我的Fyrstapplication的文件夹中,然后调用名为Index的视图,它不是从我的FirsApplication中获取,而是从我放在某个文件夹中的Dll文件中获取。 >
关于该操作的任何想法或您可以推荐的任何文章?
var moduleViewLocations = new string[]
{
"/dropfolder/SeconApplication.Web.Views/Views/{1}/{0}.cshtml",
};
答案 0 :(得分:0)
解决了核心2.1
经过多次尝试和错误,我找到了一种使用另一种解决方案中的预编译视图的方法。
在starup.cs中,您首先需要加载包含您从其他解决方案获得的视图的DLL,然后只需在剃刀视图引擎中将assebly注册为EmbeddedFileProvider。
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
//load the assembly from the view dll you have
Assembly assempbly2 = AssemblyLoadContext.Default.LoadFromAssemblyPath("C:/the/path/to/your/solution.Views.dll");
//register the views in razor view engine
services.Configure<RazorViewEngineOptions>(options =>
{
options.FileProviders.Add(new EmbeddedFileProvider(assempbly2));
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}