2011-11-16 28 views
11

Mỗi khi tôi xây dựng một giải pháp cụ thể, tôi sẽ nhận được một số lượng ngẫu nhiên "Biểu thức quá dài hoặc phức tạp để biên dịch" trong Lỗi Cửa sổ danh sách. Tuy nhiên, mục duy nhất mà lỗi trỏ tới là dự án cụ thể, không phải là tệp trong dự án hoặc LOC cụ thể.Lỗi xây dựng: "Biểu thức quá dài hoặc phức tạp để biên dịch"

Khi tôi gặp phải điều này, tôi 'Làm sạch' và sau đó tôi khởi động lại VS và điều đó dường như khắc phục. Bất kỳ ý tưởng về những gì đang gây ra điều này?

Giải pháp cụ thể này có 50 dự án trong đó.

+0

Bạn có bật bất kỳ tiện ích mở rộng/tiện ích bổ sung nào có thể cản trở việc biên dịch không? – drharris

+0

Tôi hiện đang có "Go To Definition" và "Powerivity Power Tools" được cài đặt, bật và cập nhật. –

+0

Tôi không thể chịu đựng được hơn 6 dự án/giải pháp ... Tôi cảm thấy rất nhiều đau đớn cho bạn. –

Trả lời

14

FYI, lỗi đó là đặc trưng của trình biên dịch hết dung lượng ngăn xếp. Thông thường điều đó xảy ra khi bạn ném một vấn đề "đệ quy sâu" vào trình biên dịch, như nói,

int x = (1 + (1 + (1 + (1 + ......... + 1) + 1) + 1) + 1); 

nói, vài nghìn sâu. Các máy phân tích cú pháp và ngữ nghĩa là cả hai bộ phân tích đệ quy gốc và do đó dễ bị chạy ra khỏi không gian ngăn xếp trong các kịch bản khắc nghiệt.

Tôi không biết tại sao tắt và bắt đầu lại sẽ ảnh hưởng đến điều đó. Điều đó thật kỳ lạ.

Nếu bạn nhận được bản giới thiệu vững chắc, tôi rất muốn xem nó. Hoặc đăng nó ở đây, hoặc nhập một lỗi trên Connect và chúng tôi sẽ có một cái nhìn vào nó. Nếu không có một repro rắn mặc dù nó là rất khó để nói những gì đang xảy ra ở đây.

+0

Tại sao lỗi tràn ngăn xếp ít nhất trỏ đến đúng khu vực? (Tôi chắc chắn có một lý do hoàn toàn phù hợp cho điều đó) – configurator

+0

@configurator: Chính xác bạn sẽ sử dụng ngăn xếp cuộc gọi nào để gọi quy trình phân tích lỗi? Chúng tôi từng gặp phải vấn đề này trong suốt thời gian khi tôi đang viết kịch bản; chúng tôi sẽ chạy ra khỏi ngăn xếp và gọi cho trình duyệt để thông báo lỗi hiển thị lỗi "không được xếp chồng", sau đó tất nhiên sẽ chạy ra khỏi ngăn xếp một lần nữa *. Windows không vui lòng gửi đến các chương trình có chủ đề chạy ra khỏi ngăn xếp * hai lần *, tôi đảm bảo với bạn. Trong trình biên dịch C# khi chúng tôi chạy ra khỏi ngăn xếp, chúng tôi chỉ hoảng sợ và thư giãn tất cả các cách để xử lý cấp cao nhất; vào thời điểm chúng ta không còn nữa, "nơi chúng tôi" bị mất. –

+0

@Eric Tôi cho rằng chỉ đơn giản là có một đối tượng tham chiếu trên mỗi ngăn giữ tệp hiện tại (và dòng, nhưng có thể hơi quá đắt) đang được xử lý và cập nhật trong khi đi cùng sẽ đủ để thông báo lỗi có thể cụ thể hơn . Hoặc bạn đang đệ quy vào nhiều 'đối tượng' khác nhau đại diện cho các tệp có khả năng khác nhau khi bạn làm điều này. – ShuggyCoUk

1

Nếu làm sạch và xây dựng lại các công trình, rõ ràng không phải là vấn đề với mã của bạn. Bạn nên báo cáo điều này cho Microsoft, có vẻ như một lỗi VS.

0

Tôi chưa bao giờ thấy điều này trong tự nhiên.

Tuy nhiên, từ googling xung quanh nó có thể cũng là từ sự dư thừa của tài liệu tham khảo lắp ráp, một trích dẫn cụ thể:

If I reduce number of referenced assemblies to 5500 it is compiled and working

Bây giờ, chắc chắn, bạn sẽ nhận thấy một danh sách phụ thuộc mà lớn, bạn có thể kiểm tra xem bạn có một số lượng quá lớn các hội đồng được tham chiếu?

+3

Làm thế nào có thể bất cứ ai tham khảo 5.000 cụm? – svick

+0

Chỉ cần kiểm tra; nó có vẻ không quá lớn. Người đó có đề cập đến 5500 hội đồng cá nhân không? Hoặc chỉ cần thêm số lượng tham chiếu hội đồng trong mỗi dự án và đếm các bản sao như System, System.XML, v.v ...? –

+0

Tôi nhận được lỗi này, tôi tin vì lý do này và tôi chỉ tham chiếu đến 63 hội đồng. –

2

Khi xây dựng, bạn có thể xem kết quả xây dựng thư mục cuối cùng mà nó kiểm tra trước khi nó không thành công. Tôi đã xóa các tệp trong thư mục đó và đưa chúng trở lại từng cái một. Cuối cùng đã tìm thấy vấn đề. Tôi không biết chính xác nó là gì nhưng nó là một trang .aspx với rất nhiều HTML. Nó không được sử dụng thường xuyên vì vậy tôi chỉ cần loại bỏ nó khỏi dự án và bây giờ nó biên dịch.

enter image description here

enter image description here

4

tôi đã nhận lỗi này trong một dự án khi tôi chuyển từ Visual Studio 2012 đến Visual Studio Cộng đồng năm 2013. Trong trường hợp của tôi đó là tập tin khổng lồ (25k dòng, không được viết bởi tôi) với số List<string[]> được khởi tạo bởi bộ khởi tạo bộ sưu tập.

Something như thế này:

public class Class 
{ 

    public List<string[]> BigList 
    { 
     get 
     { 
      return new List<string[]>() 
      { 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       . 
       . 
       . 
       . 
       . 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"} 
      } 
     } 
    } 
} 

tôi đã thay đổi nó để string[][] và dự án bắt đầu để biên dịch

public class Class 
{ 

    public string[][] BigList 
    { 
     get 
     { 
      return new string[][] 
      { 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       . 
       . 
       . 
       . 
       . 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"}, 
       new string[]{"foo","bar"} 
      } 
     } 
    } 
} 
+0

Cảm ơn Man, Bạn đã cứu mạng tôi. –

+0

Điều này cũng khắc phục được sự cố của tôi. Tôi đã có một Danh sách với hơn 40.000 từ trong đó và đã nhận được lỗi đó và thay đổi nó thành một chuỗi [] đã giải quyết được lỗi! – MattyMerrix

+0

67k dòng, điều này giải quyết nó. – odyth

0

Tôi có vấn đề này ngày hôm nay. Bằng cách nào đó tôi có một chuỗi dài thực sự trong tập tin index.cshtml của tôi.Vì vậy, hãy kiểm tra các chuỗi dài có thể gây ra sự cố này.

0

tôi nhận được lỗi này gây ra tệp svg rất lớn. và sau khi google và một số thử nghiệm cá nhân tôi thấy rằng giải pháp cho tệp svg lớn là:

@Html.Raw(File.ReadAllText(Server.MapPath("~/image.svg"))) 

trong tệp dao cạo có cách tiếp cận khác với phần html nhưng tiếc là không làm việc với tệp svg lớn.

hy vọng trợ giúp này ..

0

Tôi gặp sự cố tương tự trong máy 64 bit (VS 2012).

Tôi đã sử dụng câu trả lời của @ MikeFlynn để định vị thư mục gây ra lỗi.

Cuối cùng tôi phát hiện ra tôi đã có một trang không có mã Help.aspx đằng sau - chỉ HTML nhưng nó có nhiều hình ảnh biểu tượng nhúng như cơ sở 64

<img src="data:image/png;base64 ... /> 

tôi chuyển đổi nó sang HTML tĩnh và nó được biên dịch.

P.S. Dự án tương tự đã biên soạn O.K. trong một máy tính 32201 VS2012. Cả hai máy đều đang chạy Windows 7.

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