Virtual Path Provider with embedded resource Asp.Net MVC as class library
<p>I have a requirement of seperating whole mvc structure into class libraries. But after seperation Virtual path provider must be implemented for getting the views from dll as embedded resources. I have multiple dll from which i need to get the path. Getting confused how to use the provider code to achieve the same from multiple assemblies. following is the code for my virtual path provider.</p>

<pre><code> public class EmbeddedVirtualPathProvider : System.Web.Hosting.VirtualPathProvider
    {
        public EmbeddedVirtualPathProvider()
        {

        }

        private bool IsEmbeddedResourcePath(string virtualPath)
        {
            var checkPath = VirtualPathUtility.ToAppRelative(virtualPath);
            return checkPath.StartsWith("~/Succeed.Web/", StringComparison.InvariantCultureIgnoreCase);
        }

        public override bool FileExists(string virtualPath)
        {
            return IsEmbeddedResourcePath(virtualPath) || base.FileExists(virtualPath);
        }

        public override VirtualFile GetFile(string virtualPath)
        {
            if (IsEmbeddedResourcePath(virtualPath))
            {
                return new EmbeddedVirtualFile(virtualPath);
            }
            else
            {
                return base.GetFile(virtualPath);
            }
        }

        public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart)
        {
            if (IsEmbeddedResourcePath(virtualPath))
            {
                return null;
            }
            else
            {
                return base.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
            }
        }
    }
</code></pre>

<p>And my virtual file</p>

<pre><code>public class EmbeddedVirtualFile : VirtualFile
    {
        private string m_path;

        public EmbeddedVirtualFile(string virtualPath)
            : base(virtualPath)
        {
            m_path = VirtualPathUtility.ToAppRelative(virtualPath);
        }

        public override System.IO.Stream Open()
        {
            var parts = m_path.Split('/');
            var assemblyName = parts[1];
            var resourceName = parts[2];

            assemblyName = Path.Combine(HttpRuntime.BinDirectory, assemblyName);
            var assembly = System.Reflection.Assembly.LoadFile(assemblyName + ".dll");

            if (assembly != null)
            {
                return assembly.GetManifestResourceStream(resourceName);
            }
            return null;
        }
    }
</code></pre>

<p>Please let me know where iam doing wrong. or any thing which i need to do to mak it working. Thanc in advance</p>