2015-12-02 21 views
11

Sau khi cập nhật từ VS 2015 Cập nhật 1 RC để VS 2015 Cập nhật 1, tôi tiếp tục nhận được thông báo lỗi sau:Visual Studio 2015 Analyzer ném một ngoại lệ

Analyzer 'Microsoft.CodeAnalysis.VisualBasic .CodeFixes.SimplifyTypeNames.VisualBasicSimplifyTypeNamesDiagnosticAnalyzer ' đã ném ngoại lệ loại' System.ArgumentNullException 'với thông báo ' Giá trị không được rỗng. Tên thông số: source '

trên một trong các dự án của tôi. Phân tích mã bị vô hiệu hóa trên dự án đó (vì nó nằm trên tất cả các dự án của tôi trong giải pháp), vì vậy tôi đã cố gắng bật và tắt nhưng vẫn gặp vấn đề tương tự.

Dường như tôi vẫn có thể xây dựng và chạy giải pháp của tôi, nhưng mọi thứ không thực sự dường như hoạt động đúng sau khi nâng cấp:

  • tất cả mọi thứ đang chạy rất chậm
  • sau khi thực hiện các thay đổi và xây dựng nó không áp dụng các thay đổi

Có ai khác có vấn đề này sau lần cập nhật gần đây hoặc thậm chí trước đây không?

Tiềm năng xung quanh công việc được tìm thấy tại đây: https://github.com/dotnet/roslyn/issues/6682 được đăng bởi người dùng dpoeschl.

Và đây là văn bản gốc của mình:

Cách giải quyết: Kiểm tra hộp kiểm này: Tools | Tùy chọn | Trình chỉnh sửa văn bản | Cơ bản | Kiểu mã | Đủ điều kiện truy cập thành viên với 'nhớ'

dpoeschl's solution

workaround này có hai tác dụng phụ (mà tôi có thể nghĩ ra cho đến nay):

1. Bạn sẽ không còn nhận được một hình ảnh chỉ số của tôi thừa. hoặc sửa lỗi mã liên quan hoặc tùy chọn "Khắc phục tất cả các lần xuất hiện trong" cho dễ dàng đạt được sự tuân thủ.

2. Bất kỳ tính năng thế hệ mã mà tạo thành viên đủ điều kiện truy cập và phụ thuộc vào Simplifier để loại bỏ chúng nếu thích hợp (hoặc kiểm tra một cách rõ ràng tùy chọn này) bây giờ sẽ tạo mã không tuân thủ theo mặc định.

Bật tùy chọn này đặc biệt không xâm lấn trong cả VS2015 & Bản cập nhật VS2015 1 vì tùy chọn này chỉ được thực thi theo một hướng. Tức là, hộp kiểm không được chọn có nghĩa là máy phân tích chạy, có một số phân tích sâu hơn (không hoạt động trong trường hợp này) và cung cấp cho bạn một bóng đèn khi bạn có quyền truy cập thành viên đủ điều kiện, trong khi hộp kiểm tra có nghĩa là chúng tôi chọn không tham gia phân tích sâu hơn rất sớm và bạn không nhận được bất kỳ bóng đèn nào yêu cầu bạn thêm Tôi. trình độ chuyên môn.

Nó đã làm việc cho tôi, nó cũng có thể khắc phục sự cố cho người khác.

+0

Tôi chưa nhận thấy điều đó, nhưng tôi đã nhận thấy nhiều thứ 'nhỏ' khác dường như đã bị hỏng trong bản cập nhật này, rất nhiều để tôi gỡ cài đặt hoàn chỉnh và cài đặt lại với hy vọng có thể chữa được vấn đề. Ban giám khảo vẫn ra về việc có hay không. –

+0

Tôi đã có tất cả các loại vấn đề với VS trước khi cập nhật cũng vì vậy tôi đã hy vọng điều này sẽ sửa chữa một số vấn đề và nó đã sửa chữa một số, nhưng tôi đã kết thúc với những người khác: ( – mrc

+0

Tin tôi cảm thấy đau đớn, làm thế nào trên trái đất này đã thông qua QA tôi sẽ không bao giờ biết –

Trả lời

0

Vào ngày 30 tháng 3 năm 2016, Microsoft đã phát hành bản cập nhật mới cho Visual Studio.

Sau khi cài đặt Visual Studio Update 2 vấn đề dường như biến mất. Đây là VS Update 2VS Update 2 Release Notes

Kiểm tra Release Notes, đây là điều duy nhất họ đã chạm liên quan đến các Analyzer:

Chúng tôi thực hiện cải tiến Analyzer API, bao gồm cho phép nhà văn Analyzer để đánh dấu phân tích của họ cho thực thi đồng thời và cung cấp quyền kiểm soát liệu các máy phân tích có chạy trong mã được tạo hay không.

3

Cập nhật:

Rõ ràng, vấn đề chung là trợ lý mã đang gắn cờ cuộc gọi đến các loại lớp được chia sẻ khi tên lớp được sử dụng.

Ví dụ

Private Shared Property Instance as Class1 

Public Shared Function DefInstance1() as Class1 
    ' This causes the warning 
    Return Class1.Instance 
End Function 

Public Shared Function DefInstance2() as Class1 
    ' This is okay 
    Return Instance 
End Function 

Ví dụ, tôi chỉ định một giá trị cho các đối tượng đồng bộ hóa khi kế thừa từ System.Timers.Timer như:

MyBase.SynchronizingObject = value 

Thay vì

SynchronizingObject = value 

Trợ lý Mã VS phát hiện điều này dưới dạng tên loại có thể được đơn giản hóa.

Cũng lưu ý rằng cảnh báo mới được thêm vào mỗi khi VS bắt đầu.

Cập nhật:

Dường như thủ phạm khác là trong các mã được tạo ra bởi Visual Studio trong Application.Designer.vb:

này

Global.Microsoft.VisualBasic.ApplicationServices 

được gắn thẻ cho đơn giản hóa để

ApplicationServices 

Dường như Trợ lý mã đã trở nên quá mức ssive mà không có QA nhận thấy các vấn đề trong tầm tay.

+0

Tìm thấy một thủ phạm trong một lớp học được kế thừa từ hệ thống, Timers.Timer tôi đã thiết lập các lớp SynchronizingObject: – David

3

Đây là lỗi được giới thiệu trong Bản cập nhật 1 và đã được theo dõi at Roslyn GitHub as #6682 kể từ 2015-10-11.
Kiểm tra xem có cập nhật trạng thái không.

Cập nhật:Visual Studio 2015 Update 2 is now out và sự cố được khắc phục ở đó.

+0

Cảm ơn vì điều đó.Tôi sẽ kiểm tra ở đó, hy vọng – mrc

+0

Nó được đóng như cố định vào ngày 23 tháng 12 năm 2015. – jing

+0

Nó đã được mở cửa trở lại, sau đó đóng như cố định vào ngày 3 tháng 2 – mbomb007

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