2010-06-18 15 views
5

मैं StyleCop के प्रारूपण नियमों का पालन करने के कोड अच्छी और स्पष्ट कर देना चाहते हैं, लेकिन मैं हाल ही में अपनी चेतावनी में से एक के साथ एक समस्या मिला है:निर्देश, नेमस्पेस और असेंबली संदर्भ का उपयोग करना - सभी स्टाइलकॉप के साथ झुका हुआ!

सभी निर्देशों का उपयोग कर नाम स्थान के अंदर रखा जाना चाहिए।

मेरे समस्या मैं निर्देशों का उपयोग कर, एक विधानसभा संदर्भ (फ़ाइल हटाने मजाक के लिए) है, और एक नाम स्थान अपने परीक्षण वर्गों में से एक में करने के लिए हथकंडा है जो:

using System; 
using System.IO; 
using Microsoft.Moles.Framework; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
[assembly: MoledType(typeof(System.IO.File))] 

namespace MyNamespace 
{ 
//Some Code 
} 

ऊपर परीक्षण होने की अनुमति देता ठीक चलाएं - लेकिन स्टाइलकॉप नामस्थान के अंदर नहीं होने वाले निर्देशों के बारे में शिकायत करता है।

नामस्थान के अंदर उपयोग को रखने से त्रुटि मिलती है कि "मोल्ड टाइप" पहचान नहीं है।

दोनों usings और नाम स्थान के अंदर विधानसभा संदर्भ लाना त्रुटि

'विधानसभा' देता है इस घोषणा के लिए एक मान्य विशेषता स्थान नहीं है। इस घोषणा के लिए मान्य विशेषता स्थान 'प्रकार' हैं। इस ब्लॉक में सभी गुण को अनदेखा कर दिया जाएगा।

ऐसा लगता है मैं हर लेआउट मैं कर सकते हैं की कोशिश की है, लेकिन कोई लाभ नहीं हुआ - या तो समाधान का निर्माण नहीं होगा, मजाक काम नहीं करेगा या StyleCop शिकायत!

क्या कोई इन्हें सेट करने का तरीका जानता है ताकि सब कुछ खुश हो? या क्या मुझे इस मामले में स्टाइलकॉप चेतावनी को अनदेखा करना होगा?

+1

यदि आप मोलेड टाइप के लिए पूरी तरह से योग्य नाम देते हैं और केवल नामांकन में उपयोग को स्थानांतरित करते हैं, तो क्या यह अभी भी कॉम्प्लेन है? –

+0

यूप ने इसे ठीक किया! मुझे यह टिप्पणी मिली है कि मैंने अपने प्रश्न का उत्तर सबमिट करने के बाद हाहा!धन्यवाद हालांकि Leom, बहुत सराहना की =) – Jack

उत्तर

10

दो मिनट बाद हल हो गया!

मैं सिर्फ विधानसभा संदर्भ में "MoledType" का पूरा पथ डाल करने के लिए आवश्यक - जिसका अर्थ है कि मैं यह नाम स्थान के बाहर निर्देशों का उपयोग कर के साथ अंदर इतनी तरह छोड़ सकता: उम्मीद है कि

[assembly: Microsoft.Moles.Framework.MoledType(typeof(System.IO.File))] 
namespace MyNamespace 
{ 
using System; 
using System.IO; 
using Microsoft.Moles.Framework; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 

// Some Code... 
} 

someone'll लगता है यह उपयोगी है!

+2

बस मेरी टिप्पणी की तरह कहा :) –

+0

हाहा आप समय की तरह सिखा नहीं सकते हैं =) – Jack

+0

अच्छा काम यह मेरा दिन बड़ा समय बर्बाद कर रहा था! स्टाइलकॉप का उपयोग करना शुरू कर दिया है और अभी भी इन चीजों के बारे में विचार करने के लिए समायोजित कर रहा हूं –

5

ठेठ पैटर्न विधानसभाInfo.cs फ़ाइल के भीतर आपके सभी असेंबली स्तर विशेषताओं को रखना होगा। आम तौर पर इस फ़ाइल में कोई नामस्थान तत्व नहीं है और सभी असेंबली विशेषताओं को पूरी तरह से योग्य नामों का उपयोग करके परिभाषित किया जाता है।

1

जेसन के साथ सहमत, आपको इसे इसके बजाय AssemblyInfo.cs (परियोजना -> गुण) में रखना चाहिए।

लेकिन! AssemblyInfo.cs फ़ाइल में जो भी डालते हैं उससे सावधान रहें। आप उपयोग करना चाहते कहते हैं:

[assembly: InternalsVisibleTo("ClassA")] 

आप AssemblyInfo.cs में रखते हैं, तो इस परियोजना के सभी आंतरिक कक्षाएं ClassA को दिखाई जाएगी। यह हमेशा नहीं चाहता था।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^