2014-07-19 15 views
7

Tôi có phần mềm sau đây:VS2013 với ReSharper 8.2 không công nhận hợp đồng mã?

  • Visual Studio 2013 Update 2
  • Hợp đồng Mã (1.6.60617.15)
  • ReSharper C# phiên bản (8.2.0.2160)
  • Hợp đồng ReSharper Mã (1.0.0.0)

Khi tôi mở một phương pháp hợp đồng mã, ReSharper là bối rối về hợp đồng:

enter image description here

Cảnh báo với tôi rằng chapter có thể bị vô hiệu, mặc dù hợp đồng yêu cầu không được. Ngoài ra:

enter image description here

Hợp đồng phương pháp bất biến được gắn cờ là never used. Về mặt kỹ thuật chính xác, nhưng nó không nên cho tôi biết rằng bởi vì phương pháp được sử dụng bởi các nhà viết lại hợp đồng mã để có được thông tin về mỗi bất biến. Tôi làm cách nào để dạy ReSharper về các hợp đồng mã để sửa hai vấn đề này?

+1

Dán mã của bạn dưới dạng văn bản chứ không phải dưới dạng hình ảnh. –

+0

Cũng phản hồi cho Microsoft. Vì vậy, Microsoft sẽ sửa vấn đề đó trong bản cập nhật tiếp theo. – Shell

+2

Để chứng minh vấn đề này, tôi cần sự xuất hiện của vấn đề khi ai đó quen thuộc với môi trường ReSharper sẽ thấy nó. Những gì tốt sẽ dán mã làm, @ SonerGönül? –

Trả lời

3

Để làm việc này cho Portable Class Library, hãy làm như sau:

  1. Tạo một thư mục mới ExternalAnnotations trong C:\Program Files (x86)\JetBrains\ReSharper\v8.2\Bin\ thư mục;

  2. Đặt System.Diagnostics.Contracts.xml đó với nội dung sau:

    <assembly name="System.Diagnostics.Contracts"> 
    <member name="M:System.Diagnostics.Contracts.Contract.Assume(System.Boolean)"> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.Assume(System.Boolean,System.String)"> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.Assert(System.Boolean)"> 
        <attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.Assert(System.Boolean,System.String)"> 
        <attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.Requires(System.Boolean)"> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.Requires(System.Boolean,System.String)"> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.Requires``1(System.Boolean)"> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.Requires``1(System.Boolean,System.String)"> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.Invariant(System.Boolean)"> 
        <attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.Invariant(System.Boolean,System.String)"> 
        <attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>condition:false=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="M:System.Diagnostics.Contracts.Contract.ReportFailure(System.Diagnostics.Contracts.ContractFailureKind,System.String,System.String,System.Exception)"> 
        <attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/> 
        <attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)"> 
         <argument>=&gt;halt</argument> 
        </attribute> 
    </member> 
    <member name="T:System.Diagnostics.Contracts.ContractInvariantMethodAttribute"> 
        <attribute ctor="M:JetBrains.Annotations.MeansImplicitUseAttribute.#ctor" /> 
    </member> 
    <member name="T:System.Diagnostics.Contracts.ContractClassForAttribute"> 
        <attribute ctor="M:JetBrains.Annotations.MeansImplicitUseAttribute.#ctor" /> 
    </member> 
    </assembly> 
    
  3. Đóng tất cả các trường Visual Studio (chỉ để cung cấp cho ReSharper một cơ hội để tải lại chú thích), mở lại Visual Studio và giải pháp cần tải;

  4. Có một cơ hội bạn cần dọn dẹp bộ đệm ReSharper (ReSharper | Options | Environment | General | Clear Caches);

Ngoài ra, tôi đã gửi a new ticket về việc hỗ trợ trường hợp này trong tiện ích mở rộng ReSharper ExternalAnnotations theo mặc định.

2

Tôi đã ký hợp đồng với JetBrains qua hỗ trợ qua e-mail và đã thực hiện đột ngột. Tôi đã làm việc trong một giải pháp Thư viện lớp học di động. Tôi sẽ đính kèm thư điện tử từ phía tôi vào câu trả lời này và sẽ cập nhật câu trả lời này với các câu trả lời tiếp theo (Nếu có) cho những người có thể có vấn đề tương tự tại thời điểm này.

Cảm ơn bạn đã trả lời nhanh chóng. Tôi hiện đã cài đặt 8.2.1000.4556 và đã cập nhật tiện ích mở rộng ExternalAnnotations thành 8.2.1001. Plugin "Hợp lại mã ReSharper 1.0.0" nói trên thực tế là được gọi là "ReSharper.ContractExtensions 0.7.51" trên trang plugin. Tôi là sử dụng .NET 4.5 và tôi không xác định biểu tượng biên dịch cũng như không tham chiếu bất kỳ thư viện liên quan đến Mã nào.

Tuy nhiên, dường như tôi đã bỏ qua đề cập đến việc tôi đang làm việc trong dự án Thư viện lớp học di động . Vì tôi không nghĩ về khả năng này ở tất cả, tôi đã tạo một dự án thử nghiệm để kiểm tra cài đặt ReSharper của tôi với. Tôi đã sử dụng một dự án thông thường và một dự án thư viện Portable Class . Kết quả có thể không gây ngạc nhiên cho bạn: mọi thứ hoạt động như dự định trong dự án thông thường, nhưng Hợp đồng mã không phải là được công nhận trong Thư viện lớp di động. Do đó, dễ dàng kết luận rằng không có hỗ trợ nào cho Thư viện lớp học di động, hoặc đây chỉ là một cái gì đó chưa được kiểm tra . Tôi đã đính kèm dự án thử nghiệm vào e-mail này. Nếu bạn mở tệp "Class1.cs" trong dự án "ClassLibrary1" từ VS2013 Cập nhật 2 với ReSharper 8.2.1, bạn sẽ thấy các cảnh báo giống như tôi làm.

Tôi hy vọng bạn sẽ cân nhắc việc thêm hỗ trợ cho các loại dự án này. Tôi có thể chỉ tưởng tượng nó là một cái gì đó ít sai trong một phát hiện hỗ trợ , nhưng than ôi, tôi không biết cơ sở mã của bạn cũng không nên cố gắng để đoán.Tôi chỉ có thể hy vọng bạn sẽ xem xét tính năng này.

+0

Sử dụng câu trả lời của Alexander. Anh ấy là người hỗ trợ JetBrains đã giúp tôi. –

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