C# 使用VirtualPathProvider从不同程序集加载视图
我使用此代码从嵌入式资源加载视图。我的主要目的是从不同的程序集加载。 抱歉,如果是重复的,我找不到我的答案C# 使用VirtualPathProvider从不同程序集加载视图,c#,model-view-controller,virtualpathprovider,C#,Model View Controller,Virtualpathprovider,我使用此代码从嵌入式资源加载视图。我的主要目的是从不同的程序集加载。 抱歉,如果是重复的,我找不到我的答案 using SecondApp.Controllers; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Web; using System.W
using SecondApp.Controllers;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.Caching;
using System.Web.Hosting;
namespace PathProviderSample
{
public class EmbeddedVirtualFile : VirtualFile
{
public EmbeddedVirtualFile(string virtualPath)
: base(virtualPath)
{
}
internal static string GetResourceName(string virtualPath)
{
if (!virtualPath.Contains("/Views/"))
{
return null;
}
var resourcename = virtualPath
.Substring(virtualPath.IndexOf("Views/"))
.Replace("Views/", "SecondApp.Views.")
.Replace("/", ".");
return resourcename;
}
public override Stream Open()
{
Assembly assembly = typeof(TestController).Assembly;
var resourcename = GetResourceName(this.VirtualPath);
return assembly.GetManifestResourceStream(resourcename);
}
}
public class Vpp : VirtualPathProvider
{
private bool ResourceFileExists(string virtualPath)
{
Assembly assembly = typeof(TestController).Assembly;
var resourcename = EmbeddedVirtualFile.GetResourceName(virtualPath);
var result = resourcename != null && assembly.GetManifestResourceNames().Contains(resourcename);
return result;
}
public override bool FileExists(string virtualPath)
{
return base.FileExists(virtualPath) || ResourceFileExists(virtualPath);
}
public override VirtualFile GetFile(string virtualPath)
{
if (!base.FileExists(virtualPath))
{
return new EmbeddedVirtualFile(virtualPath);
}
else
{
return base.GetFile(virtualPath);
}
}
}
}
它从自己的程序集中加载视图,但当我从其他项目(其他dll)请求视图时,它找不到该视图
嵌入在主dll中://它可以工作
嵌入在另一个dll://cannot find中的是确切的错误消息“cannot find the view”?@jeremy thompson Server error in'/'应用程序。目录“c:\users\administrator.unospc\documents\visual studio 2015\Projects\PathProviderSample\PathProviderSample\Views\Test”不存在。无法开始监视文件更改。实际上它希望从主程序集加载视图。但观点是另一种