7

“问题是,默认情况下,asp.net mvc 不会在调试模式下捆绑 css 和 js 文件。但我们的 css 和 js 文件会在调试模式下捆绑。”

出于某种原因,所有的 css 和 js 文件都以调试模式捆绑在一起。几天前就开始了。我们有一个包含多个开发人员的大型团队,很难找出过去几天发生的变化,因为有几个更改提交到存储库。但是我在 BundleConfig 和 Global.asax.cs 中没有发现任何重大变化。

当应用程序在调试模式下运行时,BundleTable.EnableOptimizations 返回 false。

据我了解,当 debug 设置为 true 时,捆绑不会发生。 <compilation debug="true" targetFramework="4.5">

到目前为止,我还没有在谷歌上发现过这个问题。这是一个非常独特的问题吗?

理想情况下,我想修复它,而不是解决方法。找到原因是这里的实际问题。任何关于我应该从哪里开始寻找修复的指针将不胜感激。谢谢你。

编辑:我的问题与捆绑和缩小的 ASP.NET MVC 4 应用程序相似但不完全相同,为什么在调试模式下启用缩小? 有人请删除“这个问题在这里可能已经有答案:”标签。在我的情况下,捆绑路径已经以“~”开头

模板: @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/js")

捆绑配置: bundles.Add(new Bundle("~/Content/css").Include("~/Content/*.css")); bundles.Add(new Bundle("~/bundles/js").Include("~/Scripts/myproj.*"));

4

4 回答 4

9

尝试将其添加到您的全局Application_Start()

BundleTable.EnableOptimizations = false;

所以...

protected void Application_Start()
{
     AreaRegistration.RegisterAllAreas();
     WebApiConfig.Register(GlobalConfiguration.Configuration);
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
     RouteConfig.RegisterRoutes(RouteTable.Routes);
     BundleConfig.RegisterBundles(BundleTable.Bundles);
     AuthConfig.RegisterAuth();

     BundleTable.EnableOptimizations = false;
}
于 2013-05-30T15:24:10.033 回答
3

对我来说,问题在于 web.config 中的“调试”设置为false.

<configuration>
    <system.web>
        <compilation debug="false" targetFramework="4.0" />
于 2014-03-27T19:03:37.860 回答
2

专门尝试在 MVC 之外进行故障排除。

这个问题现在是否超越了您的整个团队或只是您的机器?如果是整个团队,至少您知道更改发生在提交周期的某个地方。

您是否重建了解决方案?清洁得当?您运行的是 IIS、IIS Express 还是 Cassini?您是否绝对确定您在调试器中运行的站点/构建未处于发布模式?您可能正在调试未通过构建管道修改的特定构建(失败的构建肯定属于此类别)。

我使用的是 VS 2010 和 MVC 4,默认情况下在调试模式下,我完全看不到捆绑。我不必明确设置任何东西。如果你看到不同的东西,显然必须考虑到它,因为这不是正常行为。

我觉得你最好的方法是最难的:解除你的承诺。制作工作目录的副本并恢复到发生这种情况之前的某个时间。验证此版本中没有出现问题,不要只是假设。现在在那个时间点和现在之间的中间签出一个提交。再次测试。如果构建仍然良好,请将时间减半并重复。一旦你遇到了这个问题,你就会知道它被引入的提交介于你最后一次“好的”提交和你当前正在测试的提交之间。这种技术极大地简化了将问题隔离到特定提交的过程。除非我完全不确定代码或者我已经清楚地知道它可能在哪里,否则我几乎从不一次提交一个。

于 2013-09-18T19:06:06.187 回答
1

就我而言,我曾经使用过

@Scripts.Render("/Bundles/scriptname")

当我用

@Scripts.Render("~/Bundles/scriptname")

有效。'~' 让一切变得不同。

于 2016-06-16T10:07:40.563 回答