2013-04-30 31 views
5

Tôi đã nâng cấp một dự án từ asp.net 3.5 đến 4.5 để sử dụng gói kịch bản và rút gọn javascript. Bây giờ tôi có tất cả chạy và các kịch bản tất cả đi ra trong bó mà tôi xác định nhưng họ không phải là "bó" với nhau trong một kịch bản và họ không được minified.gói kịch bản asp.net 4.5 cũng không bó và cũng không minifying

Heres những gì tôi có ...

các default.aspx chứa này:

<asp:ScriptManager 
ID="scriptmanager" 
LoadScriptsBeforeUI="false" 
runat="server" 
    ScriptMode="Release" 
    EnableScriptLocalization="false" 
> 
    <Scripts> 
     <%--Framework Scripts--%> 
     <asp:ScriptReference Path="~/bundles/MyBundle" ScriptMode="Release"/> 
     <%--Site Scripts--%> 
    </Scripts> 
</asp:ScriptManager> 

Application_Start trong Global.asax:

BundleTable.EnableOptimizations = true; 
BundleConfig.RegisterBundles(BundleTable.Bundles); 

BundleConfig.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Optimization; 

namespace MyNameSpace 
{ 
    public class BundleConfig 
    { 
     // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254726 
     public static void RegisterBundles(BundleCollection bundles) 
     { 
      bundles.Add(new ScriptBundle("~/bundles/MyBundle").Include(
       "~/Scripts/WebForms/WebForms.js", 
       "~/Scripts/WebForms/MSAjax/MicrosoftAjax.js", 
       "~/Scripts/WebForms/MSAjax/MicrosoftAjaxWebForms.js", 
       "~/Scripts/WebForms/TreeView.js", 
       "~/Scripts/WebForms/Focus.js", 
       "~/Scripts/WebForms/MenuStandards.js")); 

     } 
    } 
} 

Tôi thậm chí đã bật tắt gỡ lỗi trong web.config mặc dù tôi cố gắng ép buộc chế độ phát hành trong kịch bản lệnh cũng như tham chiếu tập lệnh.

<compilation debug="false" batch="true" targetFramework="4.5"> 

Sản lượng vẫn là một vài tài liệu tham khảo:

<script src="/MyProj/WebResource.axd?d=pynGkmcFUV13He1Qd6_TZA6EiyQ1YRW47qIzscWLzWU7jP_7DjoC2XbU7kCBkgYcJdoeAwqaVpUMnbWRsvhdMw2&amp;t=634896541540000000" type="text/javascript"></script> 
<script src="/MyProj/ScriptResource.axd?d=zvkqIRNUspAvS1yKeFhMb4kS_IY-Q_9Yn_KOfmzKLnliETz8uip5T2BUr1JOPE4XV1bmnifY3Eg8vrX8bPLYT71P0Kf8DwEcoRw5fj2tqHdQSorRXVpasfsMXeJLHbT_alkHjf2wIrgxLzxYvocKIA2&amp;t=12e197aa" type="text/javascript"></script> 
<script src="/MyProj/ScriptResource.axd?d=NJmAwtEo3Ipnlaxl6CMhvpbyEkpQU7AWZ3ZOrSRn7cdqTBUwP_3lu0l46EnEFBAkBOoC5I7IpMnx8u7VKe4fESCWGvycDq7dTXHsUSTg-j9u4S2Poz38UkmBa7Ta1cXyZ9DcFfKo7RpgjmNNoFjlZgbsHJEPN_AnazProCOQuws1&amp;t=6119e399" type="text/javascript"></script> 
<script src="/MyProj/ScriptResource.axd?d=dwY9oWetJoJoVpgL6Zq8OPgCkw9mWNaQmhnwlbrOgCXqxXAsNin9JxaUjtv38gzHz78sozRMjuXYeM_GE0v4htSt6vWwOO4-gOCLfSt6rVOvxbpcCXCLN9jI7fWPkTL2Eq7a9kcN8S4MasueIxDV0rhf-htD32XuwA259deRSNs1&amp;t=6119e399" type="text/javascript"></script> 
<script src="/MyProj/WebResource.axd?d=JoBkLzP19aTuxbWOhHobYmKZKUo0k_GoCFbuT9i-BqZJQhy_7Dl0oCPSUy3hiGltbFyiUTxWBZD-5YWblJpSZg2&amp;t=634896541540000000" type="text/javascript"></script> 

tôi đang thiếu gì? Tôi làm cách nào để có được tất cả các tập lệnh trong nhóm để chỉ xuất một tham chiếu và rút gọn mã bên trong?

Cảm ơn, J

+1

http://stackoverflow.com/questions/12018429/asp-net-bundling-minification-including-dynamically -generated-javascipt Đọc nhận xét, có thể hữu ích. – Gev

+0

cách bạn giải quyết vấn đề này – MonsterMMORPG

Trả lời

1

Nó không xuất hiện mà <asp:ScriptReference /> của bạn được xuất ra bó gì cả. Tôi tham khảo các gói từ một mẫu dao cạo sử dụng MVC như thế này:

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

mà kết quả trong đầu ra như thế này (chú ý các thuộc tính src bao gồm tên bó gốc):

<script src="/bundles/lib?v=gGKSj7TFmjDTZAjdEzBrqOOu9aGB6i4Tq0mHfaLUk_c1"></script> 

Nếu bạn không sử dụng dao cạo, bạn có thể thử trực tiếp tham chiếu lớp System.Web.Optimization.Scripts để gọi phương thức Render() và KHÔNG sử dụng <asp:ScriptReference />.

Về việc rút gọn, bạn cần phải thêm một việc rút gọn transform để bó của bạn như thế này:

var myBundle = new ScriptBundle("~/bundles/MyBundle").Include(
       "~/Scripts/WebForms/WebForms.js", 
       "~/Scripts/WebForms/MSAjax/MicrosoftAjax.js", 
       "~/Scripts/WebForms/MSAjax/MicrosoftAjaxWebForms.js", 
       "~/Scripts/WebForms/TreeView.js", 
       "~/Scripts/WebForms/Focus.js", 
       "~/Scripts/WebForms/MenuStandards.js") 
myBundle.Transforms.Add(new JsMinify()); 
bundles.Add(myBundle); 
1

Sử dụng Scripts.Render thay vì ScriptManager

<%: Scripts.Render("~/bundles/MyBundle") %> 

Hoặc trong mã đằng sau:

System.Web.Optimization.Scripts.Render("~/bundles/MyBundle")