【问题标题】:ASP.Net MVC 5 sub-directory bundling issuesASP.Net MVC 5 子目录捆绑问题
【发布时间】:2014-03-24 14:24:21
【问题描述】:

我在我的 ASP.Net MVC 5 项目中看到了一种奇怪的捆绑行为。当我如下明确声明 BundleConfig.cs 文件中的所有文件时,我的项目工作得很好:

bundles.Add(new ScriptBundle("~/bundles/app").Include(
                "~/app/app.js",
                "~/app/config.js",
                "~/app/dir1/file1.js",
                "~/app/dir1/subdir1/file2.js",
                .....

但是,如果我改用IncludeDirectory,则开发过程中的脚本路径(BundleTable.EnableOptimizations = false)不完整。这是我看到的:

bundles.Add(new ScriptBundle("~/bundles/app").Include(
                "~/app/app.js",
                "~/app/config.js")
                .IncludeDirectory("~/app/dir1", "*.js", true)

Chrome 在尝试获取 file2.js 时向我显示 404。捆绑系统将以下内容添加到我的布局页面:

<script src="/app/app.js"></script>
<script src="/app/config.js"></script>
<script src="/app/dir1/file1.js"></script>
<script src="/app/dir1/file2.js"></script>

file2.js 的路径错误。它省略了路径的subdir1 部分。我在这里遗漏了什么吗?

【问题讨论】:

  • It omits the dir2 part of the path。你的意思是subdir1
  • 是的 - 很抱歉。修好了。
  • 这是奇怪的行为。捆绑器不应该递归地跟随目录,所以如果你包含~/app/dir1,它应该只包含该目录中的文件。如果它还包括子目录中的文件,而实际上并未在路径中包括该子目录,那对我来说是一个新的。一般来说,您的最佳实践是明确的。如果要包含文件,请明确包含该文件。在我看来,IncludeDirectory 之类的东西很危险。
  • 我认为您应该在浏览器中看到的 html 源代码类似于 您是在本地运行网站吗?
  • 是的,我假设 OP 在本地运行,因为捆绑程序不做任何事情,只是在调试模式下包含所有文件。无论如何,即使在生产中,OP 也可能只有一个文件,但来自 /app/dir1/subdir1/file2.js 的代码将在该捆绑文件中丢失。无论哪种方式,它都不会真正影响问题或可能的答案。

标签: c# asp.net-mvc bundling-and-minification


【解决方案1】:

这是 1.1.1 版的一个已知问题。升级软件包(或降级到 1.1.0),它应该可以解决您的问题。

Web Optimization path issue while in debug mode

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2013-11-20
    • 2018-12-25
    • 2017-12-12
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多