मैं अपने कोड को बेहतर बनाने के लिए स्टाइलकॉप और FxCop टूल का उपयोग कर रहा हूं, लेकिन मैं ऐसे स्थान पर आया जहां दो नियम हैं, स्टाइलकॉप में से एक और FxCop में से एक जो एक-दूसरे को छोड़ देता है। यदि मैं स्टाइलकॉप से नियम से मेल खाने के लिए अपना कोड ठीक करता हूं तो FxCop सत्यापन विफल रहता है और इसके विपरीत।स्टाइलकॉप और FxCop नियम एक दूसरे को
पहला नियम स्टाइलकॉप से SA1200 है जो कहता है कि सभी निर्देशों का उपयोग नामस्थान के अंदर रखा जाना चाहिए।
सभी निर्देशों का उपयोग नामस्थान के अंदर रखा जाना चाहिए।
तो मैं इस
namespace MyNamespace
{
using System;
...
}
यह StyleCop, कोई और अधिक चेतावनियों के लिए ठीक था की तरह कुछ किया है। अब मैं FxCop सत्यापन चलाने के लिए और यह मुझसे कहता है कि CA1014 का उल्लंघन किया जाता है:
मार्क साथ CLSCompliant (सही) 'MyApp.dll' क्योंकि यह बाहर से दिखाई देने प्रकार उजागर करता है।
इसके समाधान के लिए मैं कुछ इस तरह करना चाहिए:
[ClsCompliant(true)]
namespace MyNamespace
{
...
}
लेकिन अब मैं अपने प्रोजेक्ट का निर्माण नहीं कर सकते क्योंकि ClsCompliant
विशेषता मान्यता प्राप्त नहीं है (क्योंकि यह System
नाम स्थान जो मैं MyNamespace
के अंदर शामिल से है) । तो अगर मैं निर्देश MyNamespace
घोषणा के बाहर ले जाता हूं। यह मेरा कोड संकलित करेगा लेकिन फिर से यह स्टाइलकॉप से नियम तोड़ देगा।
क्या स्टाइलकॉप या FxCop में नियमों को अक्षम करने के अलावा इस समस्या से निपटने का कोई तरीका है? और यदि यह संभव नहीं है कि नियमों में से कौन से नियमों को अक्षम करना चाहिए? जो कम महत्वपूर्ण है?
मुझे लगता है कि विधानसभा को CLSCompliant चिह्नित किया जाना चाहिए क्योंकि नामस्थान अनुपालन को चिह्नित करने के बजाय मासीजको ने बताया। –