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”不存在。无法开始监视文件更改。实际上它希望从主程序集加载视图。但观点是另一种