Visual Studio 2015 hoặc 2017 hiển thị lỗi IntelliSense nhưng giải pháp biên dịch


122

Chúng tôi hiện đang đánh giá Visual Studio 2015 mới và gặp sự cố lạ với IntelliSense. Khi tôi biên dịch giải pháp chính của chúng tôi với studio mới, bản dựng thành công, nhưng 6 lỗi vẫn được hiển thị.

Tôi phát hiện ra rằng đó không phải là lỗi thực sự mà chỉ là lỗi intellisense. Mã chắc chắn là chính xác 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.

Cả 6 lỗi đều có chung nguồn gốc. Đó là một cuộc gọi hàm tạo đơn giản. Thật kỳ lạ, nhưng cũng có một số lần xuất hiện cùng một hàm tạo 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ó bất kỳ phần mềm cũ nào (không có VS13).

Tôi đã cố gắng xóa bộ nhớ đệm, xóa tệp suo, xóa thư mục bin và obj, làm sạch và xây dựng lại giải pháp, v.v. Nhưng không có gì hiệu quả.

Bất cứ ai có thể giải thích hành vi đó cho tôi?


2
Trình phân tích cú pháp được intellisense sử dụng không giống với trình biên dịch được sử dụng để biên dịch mã thực sự.
lạnh

1
Điều này cũng xảy ra trên VS 2013. Có thể là VS vẫn chưa lập chỉ mục toàn bộ cơ sở mã. Nếu nó biên dịch và hoạt động như mong đợi, tôi sẽ không chú ý đến nó.
Mã khác nhau

2
@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. Karlsen

1
Bạn có thể tạo một dự án nhỏ tái tạo vấn đề không? Nếu vậy, bạn có thể đăng mã?
Lasse V. Karlsen

Lớp là một phần hay là bất kỳ phần nào của nó được tạo ra tại thời điểm biên dịch?
Panagiotis Kanavos

Câu trả lời:


58

Cũng gặp sự cố này với một dự án đã di chuyển, vì vậy tôi đã tham khảo dll Microsoft.CSharp. Trong một số dự án, tôi cần xóa và thêm lại Tham chiếu trong dự án.


3
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 có sang dự án mới. Khi tôi nhận được bản 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 loại bỏ và thêm lại tham chiếu đến dự án mới từ dự án bị vi phạm đã làm việc cho tôi.
Bill

1
Chính xác tình huống mà Bill mô tả đã xảy ra với chúng tôi. Một số lớp đã được chuyển sang một dự án mới. Có vẻ như Visual Studio đã không cập nhật bộ đệm Intellisense của nó khi tham chiếu dự án mới được nhập từ điều khiển nguồn. Việc nhập lại tham chiếu theo cách thủ công buộc VS phải làm như vậy.
Peter Macej

2
Giải pháp biên dịch, nhưng hiển thị lỗi nguệch ngoạc trong một số tệp. Không có lỗi hiển thị trong "Bản phát hành", chỉ trong Gỡ lỗi. Đã xóa Microsoft.CSharp và lỗi đã biến mất, cảm ơn!
Michael

@Michael Cảm ơn vì mẹo đó. Tôi có chính xác cùng một vấn đề. Không có lỗi trong Release nhưng rất nhiều lỗi trong Debug.
user2061057

Nếu lớp được đề cập là mã của riêng bạn, bạn chỉ có thể loại trừ rồi bao gồm tệp chứa lớp đó. Nó sẽ kích hoạt VS để cập nhật IntelliSense. #awfulbug
David S.

198

Tôi đã có hàng nghìn lỗi intellisense và 0 lỗi xây dựng. Sau khi xóa .suotệp và khởi động lại lỗi VS intellisense đã biến mất.

Suo tệp được đặt tương đối với nguồn trong: .vs\SolutionName\v14\.suo

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

Chỉnh sửa: Theo nhận xét, VS2017 có cùng một 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


7
Chỉ cần lưu ý: *.suocác tệp có thể bị ẩn trong một số trường hợp. Vì vậy, bạn cần kích hoạt View Hidden filestùy chọn từ windows explorer.
Athafoud

6
Việc giết .suo không có tác dụng gì đối với tôi, nhưng việc xóa bin và dir obj và sau đó xây dựng lại giải pháp đã làm được.
Holger Böhnke

Xóa tệp .suo không giải quyết được vấn đề đối với tôi (trong VS2015) Tôi nhận được chữ nguệch ngoạc màu đỏ giả mạo trong javascript tham chiếu đến thuộc tính 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 gặp phải với XAML
Geordie

tìm thấy . -name "* suo" -exec rm -rf {} \;
Derek Greer

20

Gặp phải vấn đề tương tự trong Visual Studio 2017 ASP.Net Core Project. Các bước sau đây đã giúp tôi

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

1
Điều này hoạt động nhưng một điều tẻ nhạt như vậy phải làm theo thời gian. Tôi luôn gặp vấn đề này khi xây dựng ở chế độ phát hành. VS kỳ lạ không thể tự mình tìm ra.
nawfal

12

Tương tự vấn đề như những người khác, nhưng giải quyết 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 đổi các nhánh. Vài tuần trước, tôi bắt đầu có người chỉnh sửa cho tôi thấy lỗi (tất cả liên quan đến loại mà nó không thể tìm thấy mặc dù các tham chiếu hợp lệ). Biên dịch hoạt động tốt. Tôi đã xác nhận vấn đề tương tự trong VS 2017 15.6 Preview (ngày 6 tháng 1 năm 2018). Tôi sẽ cố gắng xóa bộ nhớ cache, tệp SUO hoặc thư mục bin / obj và không ảnh hưởng. Lúc đầu, nó sẽ hoạt động. Mở lại Visual Studio và mọi thứ sẽ ổn. Sử dụng "Giải pháp xây dựng lại" và các 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 đã gặp sự cố giống nhau trên hai máy, cả hai đều có cùng phiên bản 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 dường như đến từ hai dự án được tham chiếu. Một trong những tham chiếu đó là một dự án chia sẻ được sử dụng bởi hầu hết các dự án khác trong giải pháp, nhưng một trong số chúng là một dự án nhỏ không có nhiều tham chiếu. Nó chỉ 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! Lỗi của họ không quay lại trên Giải pháp xây dựng lại.

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

Mỗi khi tôi chuyển các nhánh Git, các lỗi lại xuất hiện 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ỡ bỏ / tải lại. Không rõ lý do tại sao trình tự đó đang khắc phục sự cố của tôi.


Dựa trên điều này, tôi đã dỡ bỏ ba dự án liên quan đến "Thử nghiệm" hoặc "Kiến trúc", sau đó dỡ bỏ và tải lại dự án đầy lỗi Intellisense (WPF). 0 trong số 0 lỗi :) +1 cho các chi tiết rời rạc đã khiến tôi thử một cái gì đó tương tự như bạn HgCoder!
Steven_BDawg

Sử dụng VS 2017 15.9.9. Sử dụng Git. Sử dụng R #. Tôi cũng thường xuyên chuyển ngành. Các lỗi của tôi thực sự là tất cả IntelliSense. Tôi nhận thấy việc dỡ dự án khiến cột "Dự án" (trong tab Danh sách lỗi) chuyển đến <Không xác định>. Vì vậy, nó dường như đang đá nó một chút. Dỡ bỏ các dự án dường như cũng có hiệu quả với tôi. Giải pháp sạch + Giải pháp xây dựng lại cuối cùng đã mang lại 0 lỗi.
dthal

7

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

Lý do Intellisense không tìm thấy tiêu đề được biên dịch trước trong môi trường của tôi là tiêu đề được đặt tên không phải là tệp thực. Nó không nhất thiết phải 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 2015, miễn là cài đặt tiêu đề được biên dịch trước được định cấu hình chính xác. Rõ ràng không còn nữa cho Intellisense. Tôi không hoàn toàn chắc chắn rằng nó đã khác vào năm 2013, có lẽ tôi chưa bao giờ nhận ra.

Trong trường hợp không chắc chắn rằng đây sẽ là sự cố đượ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ả của tiêu đề được biên dịch trước, như được chỉ định trong #includechỉ thị và để tệp đó bao gồm tên thực của tiêu đề được biên dịch trước.

Nếu bạn thắc mắc ... tại sao lại có sự phân biệt giữa tên tiêu đề được biên dịch trước trong câu lệnh '#include' và tên tệp thực của tiêu đề được biên dịch trước? Chính vì nó đảm bảo rằng cài đặt tiêu đề được biên dịch trước được định cấu hình chính xác. Bất cứ nơi nào tiêu đề được biên dịch trước là "#included", không có tệp nào có thể được đưa vào. 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 không thành công. Rõ ràng, một nhược điểm là nó gây nhầm lẫn cho người đọc mã, không chỉ Intellisense.


2

Visual Studio 2017 Tôi đã xóa tệp ".suo" khỏi vị trí .vs \ SolutionName \ v15.suo Và sau đó khởi động lại Visual studio. Điều này đã làm việc cho tôi.


2

Hôm nay tôi đã gặp sự cố tương tự với MSVC ++ 2015. Tôi gần như bỏ cuộc và quyết định tiếp tục mà không có gợi ý IDE, nhưng đột nhiên tôi nhận thấy rằng stdafx.h của dự án mà tôi gặp sự cố không chứa bất kỳ tiêu đề thư viện chuẩn nào. Tôi đã suy đoán rằng việc bao gồm tất cả các tiêu đề tiêu chuẩn được sử dụng trong dự án trong stdafx.h có thể tăng tốc độ biên dịch, tuy nhiên làm như vậy cũng khắc phục được lỗi Intellisense.


1

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


1

Tôi đã gặp sự cố tương tự với các phiên bản Visual Studio khác nhau.

Xóa thư mục .suo hoặc .vs không giúp được gì cho tôi.

Giải pháp cho tôi là tôi đã kích hoạt Extension StopOnFirstBuildError. Sau khi tắt "Dừng xây dựng trên lỗi đầu tiên" trong menu 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 sẽ biến mất.


1

Tôi chỉ thấy lỗi intellisearch khi xuất bản một trang web. (Trang ASP / C #, VS 2017). Họ đã phá vỡ bản 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à nó đã 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


1

Trong Visual Studio 2019, vấn đề là thay đổi các nhánh với Git khi có các gói NuGet được cài đặt trong dự án. Tôi đã làm gì để giải quyết vấn đề này:

  1. Giải pháp sạch
  2. Đóng Visual Studio
  3. Xóa thư mục gói
  4. Mở Visual Studio
  5. Đi tới Trình quản lý gói
  6. Khôi phục tất cả các gói
  7. Biên dịch lại
  8. Nếu thiếu roslyn, hãy đóng và mở Visual Studio, sau đó biên dịch lại.
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.