विशिष्ट MSBuild चेतावनी को कैसे दबाएं


98

क्या कमांड लाइन से MSBuild चलाते समय विशिष्ट MSBuild चेतावनी (जैसे MSB3253) को अक्षम करने का कोई तरीका है? मेरी बिल्ड स्क्रिप्ट msbuild.exe को निम्न तरीके से कॉल करती है:

msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release

मुझे पता चला है कि मैं msbuild.exe के लिए एक और पैरामीटर का उपयोग करके C # चेतावनियों (जैसे CS0618) को दबा सकता हूं:

msbuild.exe MySolution.sln /t:Rebuild /p:Configuration=Release /p:NoWarn=0618

हालाँकि, यह दृष्टिकोण MSBuild चेतावनियों के लिए काम नहीं करता है। हो सकता है कि सेट करने के लिए एक और जादूई संपत्ति हो?

मैं .NET 3.5 और VS2008 का उपयोग कर रहा हूं।

जवाबों:


62

मैं चेतावनी स्तर को दबाने में कामयाब रहा हूं /p:WarningLevel=X

msbuild.exe MySolution.sln /t:Rebuild /p:WarningLevel=0 /p:Configuration=Release
                                      ^^^^^^^^^^^^^^^^^
Warning  
Level    Meaning
-------- -------------------------------------------
      0  Turns off emission of all warning messages.

      1  Displays severe warning messages

      2  Displays level 1 warnings plus certain, less-severe warnings, such
         as warnings about hiding class members

      3  Displays level 2 warnings plus certain, less-severe warnings, such 
         as warnings about expressions that always evaluate to true or false

      4  (the default) Displays all level 3 warnings plus informational warnings

2
मुझे नहीं लगता कि यह काम करता है यदि आपने प्रत्येक परियोजना के लिए चेतावनी स्तर को 0. से अधिक होने के समाधान में कॉन्फ़िगर किया है
si618

6
हाँ सही। यह डैशबोर्ड पर टेप का उपयोग करके आपकी कार में मोटर समस्या को चालू करने जैसा है :-)
cacau

बस इसे MSBuild 15.4.8.50001, और / p: चेतावनी के साथ आज़माया गया है। चेतावनी = 0 MSBuild चेतावनी MSB3227 को दबाता नहीं है।
सोचा

2
मैं इसे करने की कोशिश करते हैं और इस संकलक चेतावनी को दबाने होगा (सीएस ..) लेकिन नहीं चेतावनी (MSB ...) MSBuild
marsze

यह एक हैक है यदि आपको वास्तव में इसकी आवश्यकता है, लेकिन आप एक निर्देशिका बना सकते हैं। Bsp.rsp से संबंधित csproj जिसे आप इस चेतावनी को दबाना चाहते हैं और इसमें सामग्री जोड़ें "/ WarnAsMessage: MSBXXXXXX"।
mjsabby

38

MSB3253 के लिए आप बस प्रोजेक्ट फ़ाइल (* .csproj) में सेट कर सकते हैं जो इस तरह की चेतावनी का कारण बनती है।

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <!-- some code goes here -->
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
        None
    </ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
    <!-- some code goes here -->
  </PropertyGroup>

5
इस उत्तर में MSB3270 भी शामिल है। जब आप प्लेटफ़ॉर्म विशिष्ट असेंबली लोड को प्रबंधित करने के लिए कस्टम असेंबली रिज़ॉल्वर का उपयोग कर रहे हैं तो बहुत आसान है।
मूवरलंड

16
क्या MS पर कहीं इन मैजिक सेटिंग्स की पूरी सूची है ..?
एटीवी

क्या आप अधिक विवरण लिख सकते हैं कि यह कैसे किया जाना चाहिए? कौन सी फाइल? संशोधित किया जाना चाहिए? क्या यह MSB8012 के लिए काम करता है?
गायेन

बस इसे नेक्रोच करने के लिए ... मैंने सॉल्यूशन एक्सप्लोरर में अपनी * .csproj फाइल पर राइट क्लिक किया, "अनलोड प्रोजेक्ट", राइट क्लिक "एडिट" पर क्लिक किया। फिर अंत में पहले संपत्ति समूह में इस "ResolveAssembly" अनुभाग की प्रतिलिपि बनाई (आमतौर पर TargetFrameworkProfile टैग के बाद) और यह इस चेतावनी को रोक देता है
स्टीवन वुड

31

MSDN फोरम MSBuild चेतावनियों में इस सूत्र के अनुसार दबाया नहीं जा सकता।


21
नोट: यह उत्तर MSBuild ("MSB" के साथ उपसर्ग) से त्रुटियों के लिए सही है, जैसा कि ओपी ने पूछा था। यदि Google आपको यहां लाया है और आप संकलक त्रुटियों (जैसे "CS2008") को दबाना चाहते हैं, तो आप वह कर सकते हैं जो ओपी ने किया था: /p:nowarn=2008(संख्या से "सीएस" को हटा दें)
माइकल हरेन

1
क्या आपको पता है कि क्या यह अभी भी मामला है?
मार्टिन बा

MSDN डॉक्स पर / अब यहाँ । Msbuild अपने CoreCompile टारगेट के हिस्से में इस चर को csc.exe से नीचे भेजता है।
डेव इवांस

रोसलिन कंपाइलर चेतावनियों को दबाने और एमएस-बिल्ड में उन्हें दबाने का एक तरीका प्रतीत नहीं होता है। '#pragma चेतावनी RCS1110 // नामस्थान के अंदर डिक्लेयर टाइप को अक्षम करें।' गिरा दिया आरसीएस के साथ संकलक चेतावनी वापस लाता है।
user1431356

11

अब इसे (मेरे जैसे) गुग्लिंग करने वालों के लिए: आगामी MSBuild 15.0 (विजुअल स्टूडियो 2017 के साथ रिलीज़ होने के लिए, मुझे लगता है) आखिरकार विशिष्ट चेतावनियों को दबाने के /NoWarnविकल्प को लागू करेगा (साथ ही /WarnAsErrorविशिष्ट चेतावनियों या त्रुटियों के रूप में या तो चेतावनी के लिए) ।


0

MSBuild के हाल के संस्करण कमांड लाइन के माध्यम से इसका समर्थन करते हैं ( जैसा कि EM0 द्वारा उल्लेख किया गया है ) या गुणों के साथ:

<PropertyGroup>
    <MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3253</MSBuildWarningsAsMessages>
</PropertyGroup>

जानकारी के लिए यह टिप्पणी देखें ।

मुझे इस बारे में आधिकारिक दस्तावेज नहीं मिले, लेकिन यह VerifyFileHashकार्य प्रलेखन में उल्लिखित है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.