从其他应用程序渲染脚本包

时间:2013-07-26 20:20:21

标签: asp.net-mvc razor bundling-and-minification

我正在创作一个由另一个MVC托管解决方案托管的MVC应用程序。客户端应用程序中的dll将复制到托管应用程序的bin文件夹中。视图,视图/共享,脚本,内容,...都被复制到托管项目。在Hosting解决方案中,我创建了一个区域,它将作为任何客户端应用程序的基础,并通过预热例程动态创建到视图的路径。这部分效果很好。

然而,我的javascript包不会像我希望的那样呈现,我相信这是因为它们没有找到文件。在这个客户端应用程序中,我有两个JS文件......为简单起见,javascript1.jsjavascript2.js。它位于我的客户端应用程序的我的Scripts文件夹中:C:\MyClientApp\Scripts\*.js。编译后,构建后事件会将文件复制到托管解决方案:C:\MyHostingApp\Scripts\MyClientApp\*.js

在app启动时(也在预热例程中完成),我的包是构建的:

[assembly: WebActivatorEx.PostApplicationStartMethod(typeof(MyClientApp.AppStart), "Start")]

namespace MyClientApp
{
    public static class AppStart
    {
        public static void Start()
        { 
            ConfigureBundles();
        }  

        private static void ConfigureBundles()
        {
            var bundle = new ScriptBundle("~/MyClientApp/Js")
                .Include("~/Scripts/javascript1.js")
                .Include("~/Scripts/javascript2.js");

            BundleTable.Bundles.Add(bundle); 
        }
    }    
}

在我看来,我想致电@Scripts.Render("~/MyClientApp/Js")。这不起作用,没有任何渲染。我的假设是,它正在应用程序的根目录下查找该捆绑包,而不是MyClientApp下的捆绑包。为了正确定位捆绑包,我尝试编写一个HtmlHelper扩展来解析捆绑包...虽然我能做到的最好的办法是将捆绑包名称解析为我的源代码,最终似乎必须有一个更简单的实现这一目标的方法。关于如何渲染这些包的任何想法?我可以用路由引擎做些什么,与查找JS(最终是css)文件的视图相比可以吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

Bundling当前使用VirtualPathProvider来查找包的文件。内置的VirtualPathProvider只知道应用程序中的文件。如果您希望能够引用应用程序之外的文件,您可以尝试实现自己的VPP,它可以检索应用程序之外的文件。

相关问题