0

Я использую функцию объединения и минимизации рамки веб-оптимизации в приложении .NET MVC 5.Связывание и минимизация - Сценарии не указаны в режиме отладки

BundleConfig.cs:

public static void RegisterBundles(BundleCollection bundles) 
    { 

     bundles.Add(new ScriptBundle("~/bundles/home").Include(
        "~/Scripts/jquery-1.11.0.min.js", 
        "~/Scripts/bootstrap.min.js", 
        "~/Scripts/owl.carousel.min.js", 
        "~/Scripts/wow.min.js", 
        "~/Scripts/front.js")); 

    } 

В файле _Layout.cshtml я ссылающийся на пучки, как это:

@Scripts.Render("~/bundles/home") 

Это работает в режиме выпуска, т.е. debug = false, без каких-либо исключений в обоих сервере & клиентская сторона.

Однако, когда я установил отладку в true, ни один из сценариев не указан на странице, кроме front.js.

Я попробовал, добавив это в Application_Start() события, но я до сих пор испытываю те же проблемы:

#if DEBUG 
      BundleTable.EnableOptimizations = false; 
#else 
      BundleTable.EnableOptimizations = true; 
#endif 

Вот Web.config файла:

<configuration> 
    <appSettings> 
    <add key="webpages:Version" value="3.0.0.0"/> 
    <add key="webpages:Enabled" value="false"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 
    <system.web> 
    <compilation debug="false" targetFramework="4.5.2"/> 
    <httpRuntime targetFramework="4.5.2"/> 
    <caching> 
     <outputCacheSettings> 
     <outputCacheProfiles> 
      <add name="Cache1Week" duration="604800" varyByParam="none"/> 
     </outputCacheProfiles> 
     </outputCacheSettings> 
    </caching> 
    </system.web> 
    <system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="localhost" port="25"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/> 
     <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" culture="neutral"/> 
     <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <system.codedom> 
    <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> 
     <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/> 
    </compilers> 
    </system.codedom> 

</configuration> 
+0

Включите вашу логику if в RegisterBundles, а не Application_Start() –

+0

Вы хотите сказать это в BundleConfig? Если это так, это не изменило ситуацию. – Esen

ответ

1

Вы должны изменить ваши ссылки сценария с:

"~/Scripts/something.min.js", 

до:

"~/Scripts/something.js", 

Когда debug является false пакетирования будет автоматически искать Минимизированные файлы (используя соглашение something.min.js). В противном случае он будет использовать перечисленные файлы.

Всегда указывайте соединитель на неминифицированные файлы. Минификатор может позаботиться об этом, но он не может отменить предупреждение, если вы укажете его на миниатюрные копии.

+0

Спасибо за это! Я считаю, что соглашение рассматривает только имя файла, а не содержимое, потому что я только что удалил часть 'min' из файлов и работает. – Esen

+0

Правильно. Соглашение применяется только к имени файла и содержит ли оно '.min.js' – Amy

Смежные вопросы