Câu hỏi Visual Studio 2015: Lỗi Intellisense nhưng biên dịch giải pháp


Chúng tôi hiện đang đánh giá Visual Studio 2015 mới và gặp phải một vấn đề lạ với intellisense. Khi tôi biên soạn giải pháp chính của chúng tôi với studio mới, xây dựng thành công, nhưng 6 lỗi được hiển thị.

Tôi phát hiện ra rằng nó không phải là một lỗi thực sự, nhưng chỉ là một lỗi intellisense. Mã này chắc chắn đúng và mọi thứ được biên dịch thành công. Tuy nhiên, mã được đánh dấu màu đỏ và lỗi hiển thị trong danh sách lỗi.

Tất cả 6 lỗi đều có cùng nguồn gốc. Đó là một lời gọi hàm tạo đơn giản. Đủ kỳ lạ, nhưng cũng có một số lần xuất hiện của cùng một hàm tạo giống nhau mà không có bất kỳ lỗi nào.

Thông báo lỗi:

Code: CS1729
Message: '<the class>' does not contain a constructor that takes that many arguments.
Project: <the project name>
File: <the path to the file>

Studio mới được cài đặt trên Windows 7 mới được cài đặt mà không cần bất kỳ phần mềm kế thừa nào (không có VS13).

Tôi đã cố gắng để xóa các cache, xóa các tập tin suo, xóa bin và thư mục obj, làm sạch và xây dựng lại các giải pháp vv Nhưng không có gì làm việc.

Bất cứ ai có thể giải thích rằng hành vi với tôi?


76
2017-08-11 13:49


gốc


Trình phân tích cú pháp được sử dụng bởi intellisense không giống như trình biên dịch được sử dụng để thực sự biên dịch mã. - chill
Điều này cũng xảy ra trên VS 2013. Có thể là VS chưa hoàn tất lập chỉ mục toàn bộ mã cơ sở. Nếu nó biên dịch và làm việc như mong đợi, tôi sẽ không chú ý đến nó. - Code Different
@chill Trong VS2015, nó phải là cùng một trình phân tích cú pháp, một phần của Roslyn. - Lasse Vågsæther Karlsen
Bạn có thể tạo ra một dự án nhỏ tái tạo vấn đề? Nếu có, bạn có thể đăng mã không? - Lasse Vågsæther Karlsen
Lớp học có phải là một phần, hoặc là bất kỳ phần nào của nó được tạo ra tại thời gian biên dịch không? - Panagiotis Kanavos


Các câu trả lời:


Cũng đã có vấn đề này với một dự án di trú, vì vậy tôi tham chiếu dll Microsoft.CSharp. Trong một số dự án tôi cần phải loại bỏ và thêm lại tham chiếu trong dự án.


35
2017-09-15 12:40



Tôi phải làm điều này khi một thành viên trong nhóm thêm dự án mới vào giải pháp và di chuyển một số tệp cs từ dự án hiện tại sang dự án mới. Khi tôi nhận được mới nhất, tôi thấy nhiều lỗi nhưng tôi có thể biên dịch và chạy. Việc bỏ và thêm lại tham chiếu cho dự án mới từ dự án bị xúc phạm đã làm việc cho tôi. - Bill
Chính xác tình huống tương tự mà Bill mô tả đã xảy ra với chúng tôi. Một số lớp học đã được chuyển sang một dự án mới. Dường như Visual Studio không cập nhật bộ đệm ẩn Intellisense khi tham chiếu dự án mới được nhập từ điều khiển nguồn. Nhập lại tham chiếu bằng tay buộc VS làm như vậy. - Peter Macej
Giải pháp biên dịch, nhưng cho thấy lỗi squiggly trong một số tập tin. Không có lỗi nào được hiển thị trong "Bản phát hành", chỉ trong Gỡ lỗi. Đã xóa Microsoft.CSharp và các lỗi đã biến mất, cảm ơn! - Michael
@Michael Cảm ơn lời khuyên đó. Tôi có chính xác cùng một vấn đề. Không có lỗi trong Bản phát hành nhưng có nhiều lỗi trong Gỡ lỗi. - user2061057
Nếu lớp được đề cập là mã của riêng bạn, bạn chỉ có thể loại trừ sau đó bao gồm tệp chứa lớp đó. Nó sẽ kích hoạt VS để cập nhật IntelliSense. #awfulbug - davidshen84


Tôi đã có hàng ngàn lỗi intelliSense và 0 lỗi xây dựng. Sau khi xóa tập tin .suo, một lỗi intellisense khởi động lại đã biến mất.

Tệp Suo có vị trí tương đối với nguồn trong: .vs \ SolutionName \ v14.suo

Theo nhận xét: Hãy coi chừng * .suo là một tệp ẩn.

Chỉnh sửa: Theo nhận xét, VS2017 có cùng vấn đề, vì vậy bạn có thể sử dụng giải pháp tương tự: Xóa .vs \ SolutionName \ v15.suo


129
2017-11-02 12:30



Chỉ cần lưu ý: *.suo các tệp có thể bị ẩn trong một số trường hợp. Vì vậy, bạn cần bật View Hidden files tùy chọn từ cửa sổ thám hiểm. - Athafoud
Giết .suo không có tác dụng đối với tôi, nhưng xóa thùng rác và thư mục obj và sau đó xây dựng lại giải pháp đã làm nó. - Holger Böhnke
Đây sẽ là câu trả lời đúng - Mr_LinDowsMac
Xóa các tập tin .suo đã không giải quyết được vấn đề cho tôi (trong VS2015) Tôi đang nhận được màu đỏ giả mạo squiggly trong javascript mà tài liệu tham khảo từ mã phía sau: <%=Foo%> nói rằng biến không được khai báo, nhưng mọi thứ hoạt động trong thời gian chạy. - Tim
Tôi không chắc chắn 100%, nhưng điều này cũng có thể đã sửa lỗi đánh dấu không hợp lệ mà tôi đã nhận được với XAML - Geordie


Đã chuyển sang vấn đề tương tự trong Visual Studio 2017 ASP.Net Core Project. Các bước sau đã thực hiện mẹo cho tôi

  1. Thực hiện giải pháp sạch
  2. Đóng VS
  3. Xóa tệp .suo và xóa thư mục bin / obj
  4. Mở lại VS

8
2018-04-01 21:24



Điều này làm việc nhưng đó là một điều tẻ nhạt để làm thời gian. Tôi luôn gặp vấn đề này khi xây dựng ở chế độ phát hành. Strange VS không thể tự nó ra. - nawfal


Cũng đã có vấn đề này (tiêu đề, không phải là thông báo lỗi cụ thể), cũng như dòng nguệch ngoạc trong trình soạn thảo. Dòng nguệch ngoạc đầu tiên nằm dưới #include câu lệnh, đặt tên cho tiêu đề được biên dịch trước. Intellisense không bao gồm tiêu đề biên dịch sẵn, nhưng không liệt kê đó là một lỗi; thay vào đó nó liệt kê các lỗi xa hơn xuống tệp, trên mã (rất đúng) dựa trên các khai báo trong phần đầu được biên dịch sẵn.

Lý do Intellisense không tìm thấy tiêu đề biên dịch sẵn trong môi trường của tôi là tiêu đề có tên không phải là một tệp thực. Nó không có trong bất kỳ phiên bản VC hoặc gcc nào khác mà tôi đã sử dụng, cũng như trong trình biên dịch năm 2015, miễn là cài đặt tiêu đề biên dịch sẵn được cấu hình chính xác. Rõ ràng không còn gì nữa cho Intellisense. Tôi không hoàn toàn chắc chắn nó là khác nhau trong năm 2013, có lẽ tôi chỉ không bao giờ nhận thấy.

Trong trường hợp không chắc rằng đây sẽ là vấn đề được báo cáo ở đây, giải pháp rất đơn giản: tạo một tệp nhỏ với tên giả vờ của tiêu đề được biên dịch trước, như được chỉ rõ trong #include chỉ thị và để tệp đó bao gồm tên thực của phần đầu được biên dịch trước.

Nếu bạn tự hỏi ... tại sao sự khác biệt này giữa tên phần đầu được biên dịch sẵn trong câu lệnh '#include' và tên tệp thực của phần đầu được biên dịch trước? Chính vì nó đảm bảo rằng các thiết lập tiêu đề biên dịch sẵn được cấu hình đúng. Bất cứ nơi nào một tiêu đề biên dịch trước là "#included", không có tệp nào xung quanh có thể được bao gồm. Hoặc là một phiên bản thực sự được biên dịch trước (nhị phân) của tiêu đề thực được đọc, hoặc quá trình biên dịch thất bại. Rõ ràng, một bất lợi là nó gây nhầm lẫn những người đọc mã, không chỉ Intellisense.


6
2017-09-15 20:55





Vấn đề tương tự như những người khác, nhưng độ phân giải khác nhau. Đăng trong trường hợp tôi có thể giúp người khác.

Chạy Visual Studio 2017 15.5.2. Tôi sử dụng Git và thường xuyên chuyển nhánh. Một vài tuần trước, tôi bắt đầu có các biên tập viên cho tôi thấy lỗi (tất cả liên quan đến các loại nó không thể tìm thấy mặc dù tài liệu tham khảo là hợp lệ). Biên dịch làm việc tuyệt vời. Tôi đã xác nhận cùng một vấn đề trong VS 2017 15.6 Preview (ngày 6 tháng 1 năm 2018). Tôi sẽ cố xóa bộ nhớ cache, tệp SUO hoặc thư mục bin / obj và không có tác động. Lúc đầu nó sẽ xuất hiện để làm việc. Mở lại Visual Studio và mọi thứ sẽ tốt. Sử dụng "Giải pháp xây dựng lại" và lỗi IntelliSense sẽ trả về. Tôi thậm chí đã thử gỡ cài đặt / cài đặt lại Visual Studio.

Tôi đã có cùng một vấn đề trên hai máy, cả hai với cùng một phiên bản của Visual Studio.

Bằng cách xem xét các lỗi về các loại bị thiếu, tất cả chúng đều xuất phát từ hai dự án được tham chiếu. Một trong những tham chiếu đó là một dự án được chia sẻ được sử dụng bởi mọi dự án khác trong giải pháp, nhưng một trong số đó là một dự án nhỏ mà không có nhiều tham chiếu. Nó chỉ như vậy sẽ xảy ra rằng dự án nhỏ cũng được tham chiếu bởi dự án chia sẻ lớn hơn của tôi. Trong Visual Studio, tôi dỡ bỏ dự án nhỏ và tải lại nó. Các lỗi đã biến mất! Các lỗi này không quay trở lại với Giải pháp xây dựng lại.

Sau đó tôi chuyển đổi các nhánh Git và tất cả các lỗi đã quay trở lại. May mắn là tôi đã lặp lại các bước trên của việc tải / tải lại dự án nhỏ và các lỗi đã biến mất.

Mỗi lần tôi chuyển nhánh Git, các lỗi sẽ xuất hiện trở lại cho đến khi tôi lặp lại quá trình đó. Không có thay đổi nào giữa các nhánh Git cho dự án nhỏ hơn mà tôi dỡ / tải lại. Không rõ lý do tại sao chuỗi đó đang khắc phục sự cố của tôi.


5
2018-01-06 17:39





Hôm nay tôi đã có vấn đề tương tự với MSVC ++ 2015. Tôi gần như đã từ bỏ và quyết định đi mà không có gợi ý IDE, nhưng đôi khi tôi đã nhận thấy rằng stdafx.h của tiểu dự án tôi đã có vấn đề với không chứa bất kỳ tiêu đề thư viện tiêu chuẩn. Tôi đề nghị rằng nó có thể làm chậm quá trình biên dịch mô-đun, nhưng bao gồm các tiêu đề tiêu chuẩn có cố định Intellisense, quá.


0
2018-01-22 19:40





Tôi đã có nhiều stdfax.h trong Thư mục bổ sung bao gồm. Hãy đảm bảo rằng stdafx.h bạn dự định là đầu tiên trong con đường của bạn.


0
2018-05-30 14:56





Tôi đã có một vấn đề tương tự với các phiên bản Visual Studio khác nhau.

Việc xóa thư mục .suo hoặc .vs không giúp ích gì cho tôi.

Giải pháp cho tôi là, rằng tôi đã mở rộng hoạt động StopOnFirstBuildError. Sau khi tắt "Dừng xây dựng trên lỗi đầu tiên" trong trình đơn xây dựng và sau khi giải pháp được xây dựng hoàn chỉnh, các lỗi được hiển thị bởi Intellisense đã biến mất.


0
2018-03-13 07:34





Tôi đã nhìn thấy lỗi tìm kiếm intellisearch chỉ khi xuất bản một trang web. (ASP / C # trang web, VS 2017). Họ đã phá vỡ việc xuất bản. Trang web chạy tốt tại địa phương.

Đã xóa các lỗi bằng cách bỏ chọn cài đặt để biên dịch trước và xuất bản tốt.   Xuất bản -> Cài đặt -> Tùy chọn xuất bản tệp -> Biên dịch trước khi xuất bản


0
2018-05-10 18:02