2012-11-15 33 views
9

Tôi hy vọng tôi không tạo chủ đề trùng lặp, nhưng tôi đã tìm kiếm hai ngày và không thể tìm thấy giải pháp cho vấn đề này.Dotless - Không thể tham chiếu ít biến hơn trong tập tin riêng biệt với MVC Bundling

Chúng tôi đang bắt đầu dự án mới tại MVC4 và chúng tôi có phiên bản ít hơn bootstrap được tải. Vấn đề tôi gặp phải là khi tôi cố gắng tham chiếu một số lớp hoặc biến trong bootstrap.less, global.less hoặc bất kỳ thứ gì ngoài tệp hiện tại của tôi. Tôi có thể tạo một biến ở trên cùng của tập tin hiện tại và sử dụng nó chỉ tốt, nhưng nếu tôi muốn sử dụng một cái gì đó ra khỏi một tập tin riêng biệt, tôi phải @import nó. Điều này sẽ ổn nếu toàn bộ ứng dụng của tôi ít hơn trong một tệp, nhưng tôi phải @import 4+ tệp vào mỗi trang/phần ít tệp tôi tạo.

tôi thêm việc bổ sung bundling MVC4 từ https://gist.github.com/2002958

Vấn đề này, như tôi nhìn thấy nó, là mỗi tập tin được đánh giá và chuyển đổi sang css một cách độc lập. Tôi cố gắng để đơn giản hóa quá trình này và xây dựng một ít chuỗi lớn từ tất cả các file trong gói ít hơn và sau đó chuyển đổi chúng (Less.Parse(lessString)), nhưng tôi nhận được lỗi:

"You are importing a file ending in .less that cannot be found"

Vì vậy, đây là câu hỏi cuối cùng của tôi: Có cách nào để chỉ đơn giản là phân tích một chuỗi ít hơn mà không có một tập tin vật lý tham chiếu? Điều đó sẽ giải quyết vấn đề của tôi.

Nếu không thể vì một lý do lạ lùng nào đó, có một thành phần hoặc quy trình đã có sẵn mà tôi không biết về việc thực sự bó các tệp lại với nhau trước khi khai thác chúng không?

Bất kỳ ánh sáng nào về chủ đề này sẽ được đánh giá cao khi tôi quay vòng tròn để cố gắng làm việc này.

Câu hỏi này cũng đã được đăng trong nhóm Dotless:
https://groups.google.com/forum/?fromgroups#!topic/dotless/j-8OP1dNjUY

+0

bạn đã tìm thấy một giải pháp cho điều này? –

+0

Thật không may, tôi chưa bao giờ làm. Tôi dành nhiều thời gian cho nó hơn tôi nghĩ khôn ngoan, và tiếp tục. Không có giải pháp cho vấn đề này, tôi đã không sử dụng ít hơn trong vài dự án gần đây nhất của mình. Nó dường như không phải là một lựa chọn khả thi cho nhu cầu của tôi. – Difinity

Trả lời

3

sollution này đang làm việc cho tôi:
tôi có hai gói NuGet:
dotless
dotless adapter for system.web.optimization

trong web.config tôi có dòng này

<configuration> 
    <configSections> 
     <section name="dotless" type="dotless.Core.configuration.DotlessConfigurationSectionHandler, dotless.Core" /> 
    </configSections> 
    <system.web> 
     <httpHandlers> 
      <add path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler, dotless.Core" /> 
     </httpHandlers> 
    </system.web> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <handlers> 
      <add name="dotless" path="*.less" verb="GET" type="dotless.Core.LessCssHttpHandler,dotless.Core" resourceType="File" preCondition="" /> 
     </handlers> 
    </system.webServer> 
    <dotless minifyCss="true" cache="true" web="false" disableParameters="true" /> 
</configuration> 

lưu ý rằng bạn cần xác định dotless params theo nhu cầu của bạn.

trong BundleConfig.cs

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.Add(new LessBundle("~/bundles/styles/").Include(
     "~/Content/site.less" 
    )); 
    BundleTable.EnableOptimizations = True; //false if you want to debug css 
} 

và cuối cùng Site.less

/*i have to redefine some bootstrap mixin and variables, so importing bootstrap and extending happings there*/ 
@import "bootstrap-extends.less"; 

/* all other needed less should be included here too 
    for example: 
    @import "admin.less"; 
    @import "controls.less"; 
    etc 
*/ 

body{ 

} 

site.lessbootstrap-extends.less là bên trong thư mục nội dung.
bootstrap-extends nắm giữ tất cả chỉ @import cần được thường là liệt kê trong ~/Content/bootstrap/bootstrap.less

tôi hy vọng điều này sẽ giúp

Các vấn đề liên quan