“问题在于,默认情况下,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.*"));
答案 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;完全不同。