Gói ASP.NET làm thế nào để vô hiệu hóa thu nhỏ


185

Tôi có debug="true"trong cả web.config (s) của mình và tôi chỉ không muốn các gói của mình được rút gọn, nhưng dường như không có gì để tôi vô hiệu hóa nó. Tôi đã thử enableoptimisations=false, đây là mã của tôi:

//Javascript
bundles.Add(new ScriptBundle("~/bundles/MainJS")
            .Include("~/Scripts/regular/lib/mvc/jquery.validate.unobtrusive.js*")
            .Include("~/Scripts/regular/lib/mvc/jquery.validate*")
            .Include("~/Scripts/regular/lib/bootstrap.js")
            .IncludeDirectory("~/Scripts/regular/modules", "*.js", true)
            .IncludeDirectory("~/Scripts/regular/pages", "*.js", true)
            .IncludeDirectory("~/Scripts/regular/misc", "*.js", true));

//CSS
bundles.Add(new StyleBundle("~/bundles/MainCSS")
            .Include("~/Content/css/regular/lib/bootstrap.css*")
            .IncludeDirectory("~/Content/css/regular/modules", "*.css", true)
            .IncludeDirectory("~/Content/css/regular/pages", "*.css", true))

2
@ RickAnd-MSFT Yêu cầu là làm thế nào để kích hoạt tính năng bó trong khi tắt chức năng thu nhỏ. Sử dụng web.config debug = true / false hoặc EnableOptimizes chỉ chuyển cả bật hoặc tắt. Câu trả lời của Martin Devillers cho phép kích hoạt tính năng đóng gói trong khi tính năng thu nhỏ bị vô hiệu hóa
chàng trai

2
còn đối với tôi .... đối với tệp 'x.js' trong gói đảm bảo rằng KHÔNG có tệp 'x.min.js' trong thư mục nếu không bạn đã xóa chuyển đổi thu nhỏ .. gói sẽ phục vụ 'tập tin rút gọn', ví dụ: nếu bạn có 'angular.js' thì hãy XÓA 'angular.min.js' ;-)
stooboo

Câu trả lời:


137

Nếu bạn có debug="true"trong web.config và đang sử dụng Scripts/Styles.Renderđể tham chiếu các gói trong trang của mình, thì điều đó sẽ tắt cả gói và thu nhỏ. BundleTable.EnableOptimizations = falsecũng sẽ luôn tắt cả bó và thu nhỏ (không phân biệt cờ gỡ lỗi đúng / sai).

Có lẽ bạn không sử dụng những Scripts/Styles.Renderngười trợ giúp? Nếu bạn trực tiếp kết xuất các tham chiếu đến gói thông qua, BundleTable.Bundles.ResolveBundleUrl()bạn sẽ luôn nhận được nội dung được rút gọn / gói.


12
Từ câu trả lời này, tôi không chắc chắn làm thế nào để tắt chỉ thu nhỏ và để lại bó tại chỗ - điều này có thể không?
Adam Tuliper - MSFT

33
Để làm điều này, cách dễ nhất là thay đổi Script / StyleBundles thành Gói đơn giản không có Biến đổi được đặt theo mặc định, điều này sẽ tắt thu nhỏ nhưng vẫn bó. Lưu ý rằng bạn vẫn phải đặt EnableOptimizes thành true để gói xảy ra.
Hao Kung

2
còn đối với tôi .... đối với tệp 'x.js' trong gói đảm bảo rằng KHÔNG có tệp 'x.min.js' trong thư mục nếu không bạn đã xóa chuyển đổi thu nhỏ .. gói sẽ phục vụ 'trước' tệp được rút gọn, ví dụ: nếu bạn có 'angular.js' thì hãy XÓA 'angular.min.js' ;-)
stooboo

1
@stooboo Đây là cái đã sửa nó cho tôi, nhưng bạn không cần xóa gì cả. Chỉ cần bao gồm các tập tin không min.
OneHoopyFrood

2
EnableOptimizations = false- mã này thuộc về đâu?
alex

157

Chỉ thị biên soạn có điều kiện là bạn của bạn:

#if DEBUG
            var jsBundle = new Bundle("~/Scripts/js");
#else
            var jsBundle = new ScriptBundle("~/Scripts/js");
#endif

16
Trên thực tế tôi nghĩ rằng anh ta đã đóng đinh - để tắt tính năng thu nhỏ, hãy sử dụng Gói theo Hao, nếu không thì sử dụng ScriptBundle để bó và rút gọn, không?
Adam Tuliper - MSFT

1
Đây là một giải pháp tuyệt vời khi bạn muốn tham chiếu gói theo URI tham chiếu gói của nó cho những thứ như tải qua RequireJS mà không cần sử dụng hệ thống bó / rút gọn riêng của RequireJS.
Norman H

1
Tôi thấy những thứ như Adam, tôi hiểu ScriptBundle như một Gói nâng cao, vì vậy vì bạn muốn thêm một tham chiếu cơ bản (không có thao tác hậu cụ thể nào), Bundle dường như là một cách tốt để vô hiệu hóa việc thu nhỏ trên một gói cụ thể.
Charles HETIER

6
@ RickAnd-MSFT Tôi nghĩ rằng bạn đang hiểu sai mục đích của mã này cho phép bó + không thu nhỏ trong chế độ gỡ lỗi và bó + thu nhỏ trong chế độ phát hành. Sử dụng web.config debug = true / false hoặc EnableOptimizes chỉ chuyển cả bật hoặc tắt. Tôi đã đọc bình luận của bạn và bác bỏ giải pháp này của Martin, chỉ để thấy rằng đó thực sự là một cách rất tốt để bó mà không cần rút gọn
chàng trai

-1 "giải pháp" này là một khoảng cách tốt nhất. Trong thực tế, mặc dù nó hoạt động nhưng nó dẫn đến mã rất không thể nhầm lẫn. Nhưng đó không phải là điều tồi tệ nhất về nó. Việc sử dụng "Gói" dẫn đến các tài sản được máy chủ bàn giao với loại mime được đặt thành "text / html" thay vì "text / javascript". Nếu bạn áp dụng phương pháp này để gói các tệp css bạn đang chơi với lửa khi ở chế độ gỡ lỗi. Đừng. Chỉ không. Xem câu trả lời của tôi cho một cách tiếp cận lành mạnh hơn, hoạt động trong các bản dựng sản xuất.
XDS

89

Để vô hiệu hóa gói và thu nhỏ, chỉ cần đặt tệp .aspx này (điều này sẽ vô hiệu hóa tối ưu hóa ngay cả debug=truetrong web.config )

vb.net:

System.Web.Optimization.BundleTable.EnableOptimizations = false

Cnet

System.Web.Optimization.BundleTable.EnableOptimizations = false;

Nếu bạn đặt EnableOptimizations = truecái này sẽ bó và rút gọn ngay cả debug=truetrong web.config


2
Đây là điều duy nhất khắc phục vấn đề cho tôi. Tôi đã có debug="true"và đúng Script.Rendernhưng nó vẫn không hoạt động. Cũng lưu ý rằng điều này sẽ không lưu trữ bất kỳ tệp .min.js nào, vì vậy hãy chắc chắn bao gồm các bản sao mã phụ thuộc chưa được tối ưu hóa.
OneHoopyFrood

2
@TCC: Tôi có sai khi nghĩ rằng cú pháp vb.net nên có vốn Falsekhông?
jeremysawgie 19/03/2015

@jeremysawemme oh yeah Tôi nghĩ điều đó đúng, điểm tốt :-) Tôi không phải là lập trình viên VB thường xuyên nên tôi thậm chí không nhận thấy ...
TCC

1
Dòng đầu tiên phải là "... ngay cả khi debug = false" không?
UnionP

2
vb.Net không quan tâm đến trường hợp, Sai = sai, như .tostring () = .toString ()
manuel

67

Bạn có thể tắt thu nhỏ trong các gói của mình chỉ bằng cách Xóa các biến đổi của bạn.

var scriptBundle = new ScriptBundle("~/bundles/scriptBundle");
...
scriptBundle.Transforms.Clear();

Cá nhân tôi thấy điều này hữu ích khi muốn gói tất cả các tập lệnh của mình trong một tệp duy nhất nhưng cần khả năng đọc trong các giai đoạn gỡ lỗi.


-1 Ở đây là những con rồng: Trích xuất JsMinifier / CssMinifier cũng loại bỏ cơ chế bên trong, đặt loại mime thành "text / css" hoặc "text / javascript". Điều này không gây ra sự cố trong chế độ gỡ lỗi / phát hành nhưng nó tàn phá các gói css trong bối cảnh các bản dựng được xuất bản (còn gọi là triển khai trực tiếp): Chrome và firefox từ chối tải các gói css nói rằng loại mime của chúng được đặt thành "văn bản / html" thay vì "văn bản / css". Với js-bundles mọi thứ tập luyện bằng cách nào đó nhưng tốt nhất là có một gói js được chuyển giao dưới dạng "text / html" (<- nghiêm túc?). Xem câu trả lời của tôi cho cách tiếp cận chính xác.
XDS

27

Tôi đã thử rất nhiều những gợi ý này nhưng có vẻ như đã có hiệu quả. Tôi đã lãng phí khá nhiều giờ chỉ để phát hiện ra rằng đây là sai lầm của mình:

@Scripts.Render("/bundles/foundation")

Nó luôn có tôi rút gọn và đóng gói javascript, bất kể tôi đã thử gì. Thay vào đó, tôi nên sử dụng điều này:

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

Thêm '~' đã làm điều đó. Tôi thậm chí đã loại bỏ nó một lần nữa chỉ trong một trường hợp để xem đó có thực sự là nó không. Đó là ... hy vọng tôi có thể cứu được ít nhất một người trong những giờ tôi đã lãng phí cho việc này.


24

Kết hợp một số câu trả lời, điều này làm việc cho tôi trong ASP.NET MVC 4.

        bundles.Add(new ScriptBundle("~/Scripts/Common/js")
            .Include("~/Scripts/jquery-1.8.3.js")
            .Include("~/Scripts/zizhujy.com.js")
            .Include("~/Scripts/Globalize.js")
            .Include("~/Scripts/common.js")
            .Include("~/Scripts/requireLite/requireLite.js"));

        bundles.Add(new StyleBundle("~/Content/appLayoutStyles")
            .Include("~/Content/AppLayout.css"));

        bundles.Add(new StyleBundle("~/Content/css/App/FunGrapherStyles")
            .Include("~/Content/css/Apps/FunGrapher.css")
            .Include("~/Content/css/tables.css"));

#if DEBUG
        foreach (var bundle in BundleTable.Bundles)
        {
            bundle.Transforms.Clear();
        }
#endif

21

Ngoài ra còn có một số cách đơn giản để kiểm soát thu nhỏ (và các tính năng khác) theo cách thủ công. Đó là biến áp CssMinify () mới sử dụng, như thế này:

// this is in case when BundleTable.EnableOptimizations = false;
var myBundle = new StyleBundle("~/Content/themes/base/css")
    .Include("~/Content/themes/base/jquery.ui.core.css" /* , ... and so on */);
myBundle.Transforms.Add(new CssMinify());
bundles.Add(myBundle);

// or you can remove that transformer in opposite situation
myBundle.Transforms.Clear();

Thật tiện lợi khi bạn muốn có một số phần đặc biệt chỉ được thu nhỏ. Giả sử, bạn đang sử dụng một số kiểu (jQuery) tiêu chuẩn, đang nằm dưới chân bạn (nhận rất nhiều yêu cầu trình duyệt quá mức cho họ), nhưng bạn muốn giữ nguyên bản định kiểu của mình. (Giống nhau - với javascript).


13

Tôi đã kết hợp một vài câu trả lời được đưa ra bởi những người khác trong câu hỏi này để đưa ra một giải pháp thay thế khác.

Mục tiêu: Để luôn đóng gói các tệp, để vô hiệu hóa thu nhỏ JS và CSS trong trường hợp <compilation debug="true" ... />và luôn luôn áp dụng chuyển đổi tùy chỉnh cho gói CSS.

Giải pháp của tôi :

1) Trong web.config : <compilation debug="true" ... />

2) Trong phương thức Global.asax Application_Start () :

 protected void Application_Start() {
     ...
     BundleTable.EnableOptimizations = true; // Force bundling to occur

     // If the compilation node in web.config indicates debugging mode is enabled
     // then clear all transforms. I.e. disable Js and CSS minification.
     if (HttpContext.Current.IsDebuggingEnabled) {
         BundleTable.Bundles.ToList().ForEach(b => b.Transforms.Clear());
     }

      // Add a custom CSS bundle transformer. In my case the transformer replaces a
      // token in the CSS file with an AppConfig value representing the website URL
      // in the current environment. E.g. www.mydevwebsite in Dev and
      // www.myprodwebsite.com in Production.
      BundleTable.Bundles.ToList()
          .FindAll(x => x.GetType() == typeof(StyleBundle))
          .ForEach(b => b.Transforms.Add(new MyStyleBundleTransformer()));
     ...
}

7

Nếu bạn đặt thuộc tính sau thành false thì nó sẽ vô hiệu hóa cả gói và thu nhỏ.

Trong tệp Global.asax.cs , thêm dòng như được đề cập dưới đây

protected void Application_Start()
{
    System.Web.Optimization.BundleTable.EnableOptimizations = false;
}

Tôi chỉ không hiểu tại sao các tập tin ít hơn của tôi được chuyển thành css khi tôi tắt tính năng này? Khi tôi kích hoạt tối ưu hóa, gói ít tệp không hoạt động nữa.
FrenkyB

5

Đây là cách vô hiệu hóa thu nhỏ trên cơ sở mỗi gói:

bundles.Add(new StyleBundleRaw("~/Content/foobarcss").Include("/some/path/foobar.css"));
bundles.Add(new ScriptBundleRaw("~/Bundles/foobarjs").Include("/some/path/foobar.js"));

Sidenote: Các đường dẫn được sử dụng cho các gói của bạn không được trùng với bất kỳ đường dẫn thực tế nào trong các bản dựng đã xuất bản của bạn nếu không sẽ không có gì hoạt động. Đồng thời đảm bảo tránh sử dụng .js, .css và / hoặc '.' và '_' bất cứ nơi nào trong tên của gói. Giữ tên càng đơn giản và càng đơn giản càng tốt, như trong ví dụ trên.

Các lớp trợ giúp được hiển thị dưới đây. Lưu ý rằng để làm cho các lớp này trở thành bằng chứng trong tương lai, chúng tôi đã phẫu thuật loại bỏ các cá thể rút gọn js / css thay vì sử dụng .clear () và chúng tôi cũng chèn một phép biến đổi kiểu mime mà không có các bản dựng sản xuất nào gặp phải sự cố, đặc biệt là khi nói đến việc bàn giao đúng các gói css (firefox và chrome từ chối các gói css với loại mime được đặt thành "text / html" là mặc định):

internal sealed class StyleBundleRaw : StyleBundle
{
        private static readonly BundleMimeType CssContentMimeType = new BundleMimeType("text/css");

        public StyleBundleRaw(string virtualPath) : this(virtualPath, cdnPath: null)
        {
        }

        public StyleBundleRaw(string virtualPath, string cdnPath) : base(virtualPath, cdnPath)
        {
                 Transforms.Add(CssContentMimeType); //0 vital
                 Transforms.Remove(Transforms.FirstOrDefault(x => x is CssMinify)); //0
        }
        //0 the guys at redmond in their infinite wisdom plugged the mimetype "text/css" right into cssminify    upon unwiring the minifier we
        //  need to somehow reenable the cssbundle to specify its mimetype otherwise it will advertise itself as html and wont load
}

internal sealed class ScriptBundleRaw : ScriptBundle
{
        private static readonly BundleMimeType JsContentMimeType = new BundleMimeType("text/javascript");

        public ScriptBundleRaw(string virtualPath) : this(virtualPath, cdnPath: null)
        {
        }

        public ScriptBundleRaw(string virtualPath, string cdnPath) : base(virtualPath, cdnPath)
        {
                 Transforms.Add(JsContentMimeType); //0 vital
                 Transforms.Remove(Transforms.FirstOrDefault(x => x is JsMinify)); //0
        }
        //0 the guys at redmond in their infinite wisdom plugged the mimetype "text/javascript" right into jsminify   upon unwiring the minifier we need
        //  to somehow reenable the jsbundle to specify its mimetype otherwise it will advertise itself as html causing it to be become unloadable by the browsers in published production builds
}

internal sealed class BundleMimeType : IBundleTransform
{
        private readonly string _mimeType;

        public BundleMimeType(string mimeType) { _mimeType = mimeType; }

        public void Process(BundleContext context, BundleResponse response)
        {
                 if (context == null)
                          throw new ArgumentNullException(nameof(context));
                 if (response == null)
                          throw new ArgumentNullException(nameof(response));

         response.ContentType = _mimeType;
        }
}

Để làm cho toàn bộ điều này hoạt động, bạn cần cài đặt (thông qua nuget):

WebGreas 1.6.0+ Microsoft.AspNet.Web.Optimization 1.1.3+

Và web.config của bạn nên được làm phong phú như vậy:

<runtime>
       [...]
       <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-x.y.z.t" newVersion="x.y.z.t" />
       </dependentAssembly>
       <dependentAssembly>
              <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-x.y.z.t" newVersion="x.y.z.t" />
       </dependentAssembly>
        [...]
</runtime>

<!-- setting mimetypes like we do right below is absolutely vital for published builds because for some reason the -->
<!-- iis servers in production environments somehow dont know how to handle otf eot and other font related files   -->
</system.webServer>
        [...]
        <staticContent>
      <!-- in case iis already has these mime types -->
      <remove fileExtension=".otf" />
      <remove fileExtension=".eot" />
      <remove fileExtension=".ttf" />
      <remove fileExtension=".woff" />
      <remove fileExtension=".woff2" />

      <mimeMap fileExtension=".otf" mimeType="font/otf" />
      <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
      <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
      </staticContent>

      <!-- also vital otherwise published builds wont work  https://stackoverflow.com/a/13597128/863651  -->
      <modules runAllManagedModulesForAllRequests="true">
         <remove name="BundleModule" />
         <add name="BundleModule" type="System.Web.Optimization.BundleModule" />
      </modules>
      [...]
</system.webServer>

Lưu ý rằng bạn có thể phải thực hiện các bước bổ sung để làm cho các gói css của bạn hoạt động về mặt phông chữ, v.v ... Nhưng đó là một câu chuyện khác.


4

Chỉ để bổ sung các câu trả lời đã được cung cấp, nếu bạn cũng muốn KHÔNG thu nhỏ / obfuscate / concatenate MỘT SỐ tệp trong khi vẫn cho phép gói và thu nhỏ đầy đủ cho các tệp khác , tùy chọn tốt nhất là đi kèm với trình kết xuất tùy chỉnh sẽ đọc nội dung của gói cụ thể (s) và kết xuất các tệp trong trang thay vì hiển thị đường dẫn ảo của gói. Cá nhân tôi yêu cầu điều này bởi vì IE 9 là $ *% @ trên giường khi các tệp CSS của tôi đang được gói ngay cả khi đã tắt .

Cảm ơn rất nhiều về bài viết này , nó đã cho tôi điểm khởi đầu cho mã mà tôi đã sử dụng để tạo CSS Renderer sẽ hiển thị các tệp cho CSS nhưng vẫn cho phép hệ thống hiển thị các tệp javascript của tôi được gói / rút gọn / bị xáo trộn.

Tạo lớp trình trợ giúp tĩnh:

using System;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;

namespace Helpers
{
  public static class OptionalCssBundler
  {
    const string CssTemplate = "<link href=\"{0}\" rel=\"stylesheet\" type=\"text/css\" />";

    public static MvcHtmlString ResolveBundleUrl(string bundleUrl, bool bundle)
    {
      return bundle ? BundledFiles(BundleTable.Bundles.ResolveBundleUrl(bundleUrl)) : UnbundledFiles(bundleUrl);
    }

    private static MvcHtmlString BundledFiles(string bundleVirtualPath)
    {
      return new MvcHtmlString(string.Format(CssTemplate, bundleVirtualPath));
    }

    private static MvcHtmlString UnbundledFiles(string bundleUrl)
    {
      var bundle = BundleTable.Bundles.GetBundleFor(bundleUrl);

      StringBuilder sb = new StringBuilder();
      var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);

      foreach (BundleFile file in bundle.EnumerateFiles(new BundleContext(new HttpContextWrapper(HttpContext.Current), BundleTable.Bundles, bundleUrl)))
      {
        sb.AppendFormat(CssTemplate + Environment.NewLine, urlHelper.Content(file.VirtualFile.VirtualPath));
      }

      return new MvcHtmlString(sb.ToString());
    }

    public static MvcHtmlString Render(string bundleUrl, bool bundle)
    {
      return ResolveBundleUrl(bundleUrl, bundle);
    }
  }

}

Sau đó, trong tập tin bố trí dao cạo:

@OptionalCssBundler.Render("~/Content/css", false)

thay vì tiêu chuẩn:

@Styles.Render("~/Content/css")

Tôi chắc chắn rằng việc tạo một trình kết xuất tùy chọn cho các tệp javascript cũng sẽ cần ít cập nhật cho trình trợ giúp này.


1
Hoạt động tốt. Nếu bạn muốn các url thay đổi khi các tệp được cập nhật, bạn có thể thay đổi CssTemplatethành một cái gì đó giống như "<link href=\"{0}?f={1}\" rel=\"stylesheet\" type=\"text/css\" />"và thay đổi sb.AppendFormatdòng thành một cái gì đó nhưsb.AppendFormat(CssTemplate + Environment.NewLine, urlHelper.Content(file.VirtualFile.VirtualPath), System.IO.File.GetLastWriteTimeUtc(HttpContext.Current.Server.MapPath(file.IncludedVirtualPath)).Ticks);
franzo

Đúng vậy, chúng tôi đã làm một cái gì đó rất nhiều như thế trong công việc. Chúng tôi đã có một chuỗi tĩnh công khai có tên là JSVersion mà chúng tôi đã đưa vào lớp Global.asax, đã kéo theo maj / min / build / rev của cụm thực thi. Sau đó, chúng tôi đã tham chiếu nó như thế này: <script type = "text / javascript" src = "Sc scripts / jsfile_name.js <% = Global.JSVersion%>"> </ script>
James Eby

3

Tìm kiếm EnableOptimizationstừ khóa trong dự án của bạn

Vì vậy, nếu bạn tìm thấy

BundleTable.EnableOptimizations = true;

tắt nó false.


2
Điều này không vô hiệu hóa thu nhỏ, nhưng nó cũng vô hiệu hóa gói hoàn toàn, mà tôi nghĩ ít nhất nên được lưu ý.
John Pavek

1

Nếu bạn đang sử dụng chuyển đổi LESS / SASS CSS, có một tùy chọn useNativeMinificationcó thể được đặt thành false để tắt tính năng thu nhỏ (trong web.config). Đối với mục đích của tôi, tôi chỉ thay đổi nó ở đây khi tôi cần, nhưng bạn có thể sử dụng các phép biến đổi web.config để luôn bật nó trên bản dựng phát hành hoặc có thể tìm cách sửa đổi nó trong mã.

<less useNativeMinification="false" ieCompat="true" strictMath="false"
      strictUnits="false" dumpLineNumbers="None">

Mẹo: Toàn bộ vấn đề này là để xem CSS của bạn, điều bạn có thể làm trong trình duyệt kiểm tra các công cụ hoặc chỉ bằng cách mở tệp. Khi gói được bật, tên tệp thay đổi trên mỗi biên dịch, vì vậy tôi đặt phần sau ở đầu trang để tôi có thể xem CSS được biên dịch của mình một cách háo hức trong cửa sổ trình duyệt mới mỗi khi nó thay đổi.

@if (Debugger.IsAttached) 
{
    <a href="@Styles.Url(ViewBag.CSS)" target="css">View CSS</a>
}

đây sẽ là một URL động giống như https://example.com/Content/css/bundlename?v=UGd0FjvFJz3ETxlNN9NVqNOeYMRrOkQAkYtB04KisCQ1


Cập nhật: Tôi đã tạo một chuyển đổi web.config để đặt nó thành đúng cho tôi trong quá trình triển khai / phát hành bản dựng

  <bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
    <less xdt:Transform="Replace" useNativeMinification="true" ieCompat="true" strictMath="false" strictUnits="false" dumpLineNumbers="None">
      <jsEngine name="MsieJsEngine" />
    </less>
  </bundleTransformer>

1
Tên tệp KHÔNG thay đổi trên mỗi biên dịch. Nó dựa trên nội dung tệp, vì vậy nó thay đổi bất cứ khi nào tệp thay đổi.
Jim Raden

1

Điều này có thể trở thành hữu ích cho ai đó trong tương lai như các khuôn khổ mới, khi thiết lập thông qua VS, được một mặc định web.config, web.Debug.configweb.Release.config. Trong phần web.release.configbạn sẽ tìm thấy dòng này:

<compilation xdt:Transform="RemoveAttributes(debug)" />

điều này dường như ghi đè lên bất kỳ thay đổi nội tuyến nào tôi đã thực hiện. Tôi đã nhận xét dòng này và chúng tôi rất hấp dẫn (về mặt xem mã không được rút gọn trong bản dựng "phát hành")

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.