2010-05-20 23 views
25

Tôi đang chơi với SpecFlow, và ReSharper cho rằng định nghĩa bước của tôi là chưa sử dụng (tôi đoán vì họ đang sử dụng thông qua phản ánh):Làm thế nào để tôi nói ReSharper rằng một thuộc tính có nghĩa là một phương pháp được sử dụng?

[Binding] 
public class StepDefinitions 
{ 
    // ... 

    [When(@"I press add")] 
    public void WhenIPressAdd() // R# thinks this is unused 
    { 
     _calculator.PressAdd(); 
    } 

    // ... 
} 

Làm thế nào tôi có thể nói ReSharper rằng phương pháp với [Given], [When], [Then] thuộc tính (vv) thực sự được sử dụng? Tôi không muốn sử dụng // ReSharper disable UnusedMember.Global nhận xét.

Tôi cũng có thể đánh dấu từng phương pháp (hoặc toàn bộ lớp học) với [JetBrains.Annotations.UsedImplicitly]. Tôi cũng không muốn làm điều đó.

+0

Thật kỳ lạ, trên một máy tính khác, R # không cảnh báo về các phương thức 'không sử dụng'. Có cài đặt cấu hình nào tôi có thể thay đổi không? –

Trả lời

26

Bạn cần sử dụng Chú thích JetBrains và đánh dấu thuộc tính bằng MeansImplicitUseAttribute. Bạn có thể tham khảo JetBrains.Annotations.dll trực tiếp, hoặc bạn có thể sao chép mã nguồn chú thích (từ ReSharper/Tùy chọn/Mã kiểm tra/Mã Chú thích) vào giải pháp của bạn.

Nếu bạn cần chú thích một số cụm ngoài mà bạn không sở hữu, bạn cần phải tạo tệp chú thích bên ngoài (xml) trong thư mục sau: %ReSharperInstallDir%\Bin\ExternalAnnotations. Có rất nhiều ví dụ, bạn có thể chỉ cần sao chép một số.

Tệp chú thích bên ngoài cũng có thể ở cùng đường dẫn với tệp DLL nếu bạn đặt tên là DllNameWithoutExtension.ExternalAnnotations.xml.

+0

Tuyệt. Có cách nào để đánh dấu một thuộc tính mà tôi không sở hữu không? –

+4

Có, bạn có thể. Bạn cần phải tạo một tệp chú thích bên ngoài (xml) trong cặp sau:% ReSharperInstallDir% \ Bin \ ExternalAnnotations. Có rất nhiều ví dụ, bạn có thể chỉ cần sao chép một số. –

+0

@IlyaRyzhenkov là có cách nào để triển khai các chú thích bên ngoài với thư viện (tôi không muốn nội tuyến hoặc tham khảo assembly JetBrains.Annotations.dll) mà không buộc người dùng đặt các chú thích này vào thư mục% ReSharperInstallDir% \ Bin \ ExternalAnnotations? – hazzik

9

Có rất nhiều ví dụ, nhưng tôi muốn rõ ràng hơn một chút trong trường hợp bạn không muốn theo dõi một ví dụ. :)

Tạo tệp có tên của tập hợp thuộc tính (.xml) trong% ReSharperInstallDir% \ Bin \ ExternalAnnotations. Ví dụ, tôi đã Microsoft.VisualStudio.QualityTools.CodedUITestFramework.xml và đưa XML này bên trong nó:

<assembly name="Microsoft.VisualStudio.QualityTools.CodedUITestFramework"> 
    <member name="T:Microsoft.VisualStudio.TestTools.UITesting.CodedUITestAttribute"> 
    <attribute ctor="M:JetBrains.Annotations.MeansImplicitUseAttribute.#ctor" /> 
    </member> 
</assembly> 

Restart VS và bạn đang trên con đường của bạn!

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