ASP.NET MVC 4在调试模式下捆绑js文件

时间:2013-05-30 10:59:09

标签: asp.net-mvc asp.net-mvc-4

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

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

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

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

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

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

修改:我的问题与ASP.NET MVC 4 app with bundling and minification, why is minification enabled in debug mode?类似但不完全相同 有人请删除“这个问题可能已经有答案:”标签。 在我的情况下,捆绑路径已经以“〜”

开头

模板: @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 个答案:

答案 0 :(得分:8)

尝试在全球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;
}

答案 1 :(得分:3)

对我来说问题出在web.config“debug”设置为false

<configuration>
    <system.web>
        <compilation debug="false" targetFramework="4.0" />

答案 2 :(得分:2)

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

此问题现在是否超越了您的整个团队或仅仅是您的计算机?如果是整个团队,至少你知道改变发生在提交周期的某个地方。

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

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

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

答案 3 :(得分:1)

就我而言,我曾经使用过

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

当我用

替换它时
@Scripts.Render("~/Bundles/scriptname")

它奏效了。 &#39;〜&#39;完全不同。