2015-11-10 9 views
43

मेरी WinForms VS2013 प्रोजेक्ट को VS2015 में अपग्रेड करने के बाद, मैंने MSB3884 "नियम सेट फ़ाइल नहीं ढूंढ सका" चेतावनी देखना शुरू कर दिया।वीएस2015: चेतावनी MSB3884: नियम सेट फ़ाइल नहीं मिली

एक Google खोज ने एक एमएसडीएन आलेख बनाया, जो एक स्टैक ओवरफ़्लो आलेख के साथ-साथ कई अन्य साइटें भी इंगित करता है।

इसी प्रकार के प्रश्न: 33020507 MSDN: VS2015 MSB3884 Warning

मैं दोनों VS2013 और VS2015 स्थापित की है।

प्रोजेक्ट फाइलें चेतावनियां (और जो नहीं हैं) दे रही हैं, इन प्रविष्टियों में नहीं है।

<CodeAnalysisRuleSetDirectories> 
<CodeAnalysisRuleDirectories> 

अगर मैं इस परियोजना फ़ाइल से अन्य दो प्रविष्टियों को हटा, तो समस्या दूर हो जाता है, जो, स्पष्ट है के रूप में वहाँ कोई नियम फ़ाइल सेट है।

<CodeAnalysisIgnoreBuiltInRuleSets> 
<CodeAnalysisIgnoreBuiltInRules> 

मैं एमएसबिल्ड का उपयोग करके बाहरी रूप से निर्माण करने की कोशिश कर रहा हूं, हालांकि वीएस2015 समस्या को भी दिखाता है।

दिलचस्प है, अगर मैं प्रोजेक्ट गुण कोड विश्लेषक क्षेत्र में खुले बटन पर क्लिक करता हूं, तो मुझे फ़ाइल मिलती है।

एक अलग नियम सेट निर्दिष्ट करना कोई फर्क नहीं पड़ता। इससे मुझे लगता है कि संभवतः, एक पर्यावरण परिवर्तनीय सेटिंग है, ऐसा नहीं है कि कोई भी दिमाग में आ जाए। कोड विश्लेषक प्रोजेक्ट फ़ाइल का एक फ़ंक्शन है। मैं एक निर्देशिका विशेषता जोड़ सकता हूं, लेकिन सर्वसम्मति पथ, <CodeAnalysisRule*Directories> को बाहर निकालना है।

जीयूआई चूक का उपयोग करता है:

VS2015 Project Properties Code Analysis tab '

यहाँ एक ठेठ प्रोजेक्ट फाइल टुकड़ा है।

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'"> 
    <DebugSymbols>true</DebugSymbols> 
    <OutputPath>bin\x86\Debug\</OutputPath> 
    <DefineConstants>TRACE;DEBUG</DefineConstants> 
    <DebugType>full</DebugType> 
    <PlatformTarget>x86</PlatformTarget> 
    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets> 
    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules> 
    <Prefer32Bit>false</Prefer32Bit> 
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors> 
    <CodeAnalysisRuleSet>BasicCorrectnessRules.ruleset</CodeAnalysisRuleSet> 
    </PropertyGroup> 
    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'"> 
    <DebugSymbols>true</DebugSymbols> 
    <OutputPath>bin\x64\Debug\</OutputPath> 
    <DefineConstants>TRACE;DEBUG</DefineConstants> 
    <DebugType>full</DebugType> 
    <PlatformTarget>x64</PlatformTarget> 
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> 
    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules> 
    </PropertyGroup> 

के बिना, परियोजना फ़ाइल से कोड विश्लेषण लाइनों से छुटकारा हालांकि एक प्रोजेक्ट फ़ाइल सहेजने का पुन: बस इसे वापस जोड़ना होगा, मैं कैसे समाप्त कर सकते हैं/हो रही चेतावनी को ठीक?

+1

संभावित डुप्लिकेट [VS2015 MSB3884 चेतावनी: नियम सेट फ़ाइल नहीं मिल सकी] (http://stackoverflow.com/questions/33020507/vs2015-msb3884-warning-could-not-find-rule- सेट-फाइल) – timB33

+0

@ timB33 दो प्रश्नों के बीच अंतर यह है कि इस उदाहरण में निर्देशिकाओं को .csproj फ़ाइल –

उत्तर

54

मुझे वीएस2013 से वीएस2015 तक अपग्रेड करने के बाद ही एक ही समस्या आई है।

मेरे समाधान किया गया था:

  1. परियोजना संपत्तियों पर कोड विश्लेषण अनुभाग पर जाएँ।
  2. नियम सेट की सूची में ब्राउज़ विकल्प का चयन करें। enter image description here
  3. VS2015 नियम सेट फ़ोल्डर में ब्राउज़ करें। सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 14.0 \ टीम टूल्स \ स्टेटिक विश्लेषण उपकरण \ नियम सेट
  4. नियम सेट चुनें। नई परियोजनाओं द्वारा उपयोग किया जाने वाला डिफ़ॉल्ट है: न्यूनतम अनुशंसित नियम। नियम
  5. पुनर्निर्माण। जांचें कि चेतावनी चली गई है। enter image description here
+11

में स्पष्ट रूप से सेट नहीं किया गया है, जब मैं ऐसा करता हूं तो मुझे अपने .csproj में एक सापेक्ष पथ मिलता है। जो मेरी बाकी टीम को गड़बड़ कर देगा क्योंकि यह मेरे कार्यक्षेत्र के सापेक्ष है। – timB33

+0

@ timB33: सुझाव दें कि आप [33020507] (https://stackoverflow.com/questions/33020507/vs2015-msb3884-warning-could-not-find-rule-set-file) और विजुअल स्टूडियो की अपग्रेड प्रक्रिया से सलाह का पालन करें: एनवी परिवर्तनीय के साथ पथ सेट करें: '; $ (DevEnvDir) \ .. \ .. \ टीम टूल्स \ ...'। –

13

मैं भी वी.एस. 2013 से 2015 तक की वी.एस. पलायन के बाद यह चेतावनी मारा।मेरे मामले में त्रुटि Could not find rule set file "AllRules.ruleset" थी। मेरे लिए ठीक .csproj फ़ाइल में VisualStudioVersion सेटिंग बदलने के लिए 14.0 होना था इतना है कि यह सही नियम सेट फ़ोल्डर में दिखता है:

VisualStudioVersion setting

कि और एक के पुनर्निर्माण के बाद, चेतावनी हल किया गया था। बहुत आसान।

+2

ऐसा करने का यह सही तरीका प्रतीत होता है ... इसने कई परियोजनाओं में मेरे लिए समस्या का समाधान किया। –

+3

मेरे पास मेरी .csproj फ़ाइल – PandaWood

5

आपने कहा कि चेतावनियों को छोड़ने वाली आपकी परियोजना फाइलों में <CodeAnalysisRuleSetDirectories> प्रविष्टि नहीं थी।

मेरा या तो नहीं था, और यदि आप प्रोजेक्ट गुण कोड विश्लेषण अनुभाग में ओपन बटन पर क्लिक करते हैं तो मुझे फ़ाइल मिलती है।

हालांकि, समाधान में सभी प्रोजेक्ट फ़ाइलों को खोजना दो परियोजनाओं को बदल गया, जिनमें <CodeAnalysisRuleSetDirectories> टैग थे, और उन टैगों में पथ में विजुअल स्टूडियो संदर्भ का पुराना संस्करण था।

उन पथों को ठीक करने से मेरी समस्या ठीक हो गई है, और मैंने अभी पुष्टि की है कि त्रुटि उत्पन्न करने वाली परियोजना एक परियोजना का संदर्भ देती है जिसमें परियोजनाओं का संदर्भ दिया गया है जिसमें खराब <CodeAnalysisRuleSetDirectories> प्रविष्टियां शामिल हैं।

तो पूरे समाधान की खोज करें और सभी <CodeAnalysisRuleSetDirectories> पथों को ठीक करें, या उन्हें निकालने का प्रयास करें।

मेरे मामले में

<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> 

बन

<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories> 

(जॉन Shadforth का जवाब भी मेरे लिए काम किया, लेकिन मैं और अधिक परियोजनाओं के लिए पथ को जोड़ने पसंद नहीं आया - के रूप में timB33 टिप्पणी की)

+0

में इनमें से कोई भी विशेषता नहीं है, वास्तव में, पुराने संस्करण पथ अपग्रेड नहीं किए गए थे क्योंकि मैंने प्रोजेक्ट गुणों को संशोधित नहीं किया क्योंकि मैंने इसे वीएस 2010 या 2012 के साथ बनाया था ... दिलचस्प मामला जहां एक स्वच्छ कंप्यूटर कारण परेशानी :-) –

2

मैंने <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>

1

सेट करके इस चेतावनी से छुटकारा पा लिया वीएस2015 से वीएस2017 तक अपग्रेड किए गए समाधान को संकलित करने के लिए, लेकिन पथ में एमएसबिल्ड 14 था (सी: \ प्रोग्राम फ़ाइलें (x86) \ MSBuild \ 14.0 \ Bin)। यह सुनिश्चित करने के लिए बदला गया कि 15 पथ में था (सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो \ 2017 \ प्रोफेशनल \ MSBuild \ 15.0 \ Bin) और सभी ने काम किया।

0

मैंने यहां प्रस्तावित विभिन्न समाधानों को देखने में कुछ समय बिताया - उनमें से प्रत्येक के पास अच्छे तत्व थे लेकिन प्रत्येक को कुछ समायोजन की आवश्यकता थी। मुझे एक साफ समाधान मिला:

किसी मौजूदा स्थिति का पता लगाएं या प्रोजेक्ट फ़ाइल में कोई तत्व बनाएं जिसमें कोई शर्त नहीं है (जैसे कॉन्फ़िगरेशन या प्लेटफॉर्म) यानी सभी प्लेटफॉर्म पर सभी कॉन्फ़िगरेशन पर लागू होगा। इस elment के लिए "नियम सेट" निर्देशिका के पथ निर्दिष्ट निर्दिष्ट तत्व जोड़ें। उदाहरण के लिए:

<PropertyGroup> 
    <CodeAnalysisRuleSetDirectories>$(DevEnvDir)\..\..\Team Tools\Static Analysis Tools\Rule Sets</CodeAnalysisRuleSetDirectories> 
</PropertyGroup> 
की
संबंधित मुद्दे