Empacotamento / Minificação do ASP.NET e Recursos Incorporados

Estou tentando usar a técnica descrita emeste blog para adicionar recursos de DLL incorporados aos meus pacotes.

Eu criei o costumeVirtualPathProvider abaixo.

public class EmbeddedVirtualPathProvider : VirtualPathProvider {

    private Type _rootType;

    public EmbeddedVirtualPathProvider(Type rootType) {
        _rootType = rootType;
    }

    public override bool FileExists(string virtualPath) {
        if (IsEmbeddedPath(virtualPath))
            return true;
        else
            return Previous.FileExists(virtualPath);
    }

    public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart) {
        if (IsEmbeddedPath(virtualPath)) {
            return null;
        }
        else {
            return Previous.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
        }
    }

    public override VirtualDirectory GetDirectory(string virtualDir) {
        return Previous.GetDirectory(virtualDir);
    }

    public override bool DirectoryExists(string virtualDir) {
        return Previous.DirectoryExists(virtualDir);
    }

    public override VirtualFile GetFile(string virtualPath) {
        if (IsEmbeddedPath(virtualPath)) {
            string fileNameWithExtension = virtualPath.Substring(virtualPath.LastIndexOf("/") + 1);

            string nameSpace = _rootType.Namespace;
            string manifestResourceName = String.Format("{0}.{1}", nameSpace, fileNameWithExtension);
            var stream = _rootType.Assembly.GetManifestResourceStream(manifestResourceName);
            return new EmbeddedVirtualFile(virtualPath, stream);
        }
        else
            return Previous.GetFile(virtualPath);
    }

    private bool IsEmbeddedPath(string path) {
        return path.Contains("~/Embedded");
    }
}

public class EmbeddedVirtualFile : VirtualFile {
    private Stream _stream;
    public EmbeddedVirtualFile(string virtualPath, Stream stream)
        : base(virtualPath) {
        _stream = stream;
    }

    public override Stream Open() {
        return _stream;
    }
} 

Eu então registro isso e configuro os pacotes;

public static void RegisterBundles(BundleCollection bundles) {

    HostingEnvironment.RegisterVirtualPathProvider(new EmbeddedVirtualPathProvider(typeof(My.Custom.Type)));

    bundles.Add(new StyleBundle("~/Embedded/css").Include(
        "~/Embedded/files/styles/etc/styles.css")
    );
}

Eu também implementei um costumeEmbeddedResourceHttpHandler conforme descrito no artigo que funciona ao solicitar o arquivo como uma solicitação http direta.

Problema: Os arquivos incorporados não estão sendo incluídos no pacote,eles são apenas ignorados. Ao depurar oFileExists O método é chamado várias vezes, mas nunca para ~/Embedded/files/styles/etc/styles.css

o que estou perdendo?

Problema Secundário

Ao usar a versão mais recente do Microsoft ASP.NET Web Optimization Framework. oVirtualPathProvider funciona como esperado, porém impede aIRouteHandler de executar. Se oFileExists O método é alterado para retornar false. Isso permite que o RouteHandler execute, mas obviamente quebra oVirtualPathProvider.

Estou assumindo que não está usando uma rota configurada porque está procurando um arquivo físico quandoFileExists retorna verdadeiro? Este é um problema de configuração ou implementação?

questionAnswers(1)

yourAnswerToTheQuestion