.net - ऑपर - विंडोज १० फीचर




उसी आश्रित असेंबली के विभिन्न संस्करणों के बीच संघर्ष मिला जिन्हें हल नहीं किया जा सका (11)

और फिर मैं चेतावनी कैसे दूर करूं?

आपको इसे ठीक करने के लिए शायद अपने NuGet संकुल को reinstall या अपग्रेड करना होगा।

जब मैं साफ करता हूं और फिर अपने समाधान का निर्माण करता हूं जिसमें कई परियोजनाएं होती हैं, तो आउटपुट विंडो रिपोर्ट करती है कि निर्माण सफल हुआ। हालांकि, जब मैं त्रुटि सूची विंडो देखता हूं, तो यह मुझे यह चेतावनी दिखाता है:

उसी आश्रित असेंबली के विभिन्न संस्करणों के बीच संघर्ष मिला जिन्हें हल नहीं किया जा सका। लॉग संदर्भ शब्दकोष विस्तृत होने पर इन संदर्भ विवादों को बिल्ड लॉग में सूचीबद्ध किया गया है। सी: \ प्रोग्राम फ़ाइलें (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets

जब मैं इस संदेश को डबल-क्लिक करता हूं, तो यह सी: \ प्रोग्राम फ़ाइलें (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets फ़ाइल खोलता है लेकिन मुझे इसमें कुछ भी समझ में नहीं आता है।

मैं वेब के लिए विजुअल स्टूडियो एक्सप्रेस 2013 का उपयोग कर रहा हूं।

मैं कैसे गलत हूं और किसके साथ डीएलएल और मैं चेतावनी कैसे दूर कर सकता हूं?


@elshev से टिप्पणियों में से एक को दोहराएं समाधान पर राइट क्लिक करें -> समाधान के लिए NuGet पैकेज प्रबंधित करें -> समेकित के तहत आप देख सकते हैं कि एक ही पैकेज के विभिन्न संस्करण स्थापित किए गए हैं या नहीं। वहां पैकेज अपडेट करें। संघर्ष त्रुटि हल हो गई है।


जबकि अन्य प्रतिक्रियाएं यह कहती हैं, वे इसे स्पष्ट नहीं करते हैं, इसलिए मैं ....

VS2013.2 पर, वास्तव में उद्धृत जानकारी के उत्सर्जन को ट्रिगर करने के लिए, आपको संदेश को पढ़ने की आवश्यकता नहीं है, जो कहता है:

सी: \ प्रोग्राम फ़ाइलें (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1697,5): चेतावनी MSB3277: उसी आश्रित असेंबली के विभिन्न संस्करणों के बीच संघर्ष मिला जिन्हें हल नहीं किया जा सका। लॉग संदर्भ शब्दकोष विस्तृत होने पर इन संदर्भ विवादों को बिल्ड लॉग में सूचीबद्ध किया गया है

यह गलत है (या कम से कम यह विजुअल स्टूडियो के कुछ संस्करणों के लिए था - यह एक अद्यतित वीएस2015 अपडेट 3 या बाद में ठीक लगता है)। इसके बजाय इसे डायग्नोस्टिक ( टूल्स-> विकल्प-> प्रोजेक्ट और सॉल्यूशंस-> बिल्ड और रन से , MSBuild प्रोजेक्ट बिल्ड आउटपुट वर्बोजिटी सेट करें) पर बदलें , जहां आपको संदेश दिखाई देंगे जैसे:

"न्यूटॉन्सॉफ्ट.जेसन, संस्करण = 6.0.0.0, संस्कृति = तटस्थ, पब्लिककेट टोकन = 30ad4fe6b2a6aeed" और "न्यूटॉन्सॉफ्ट.जेसन, संस्करण = 6.0.5.17707, संस्कृति = तटस्थ, पब्लिककेट टोकन = 30ad4fe6b2a6aeed" के बीच एक संघर्ष था।

  • "न्यूटॉन्सॉफ्ट.जेसन, संस्करण = 6.0.0.0, संस्कृति = तटस्थ, पब्लिककेटोकन = 30ad4fe6b2a6aeed" चुना गया था क्योंकि यह प्राथमिक था और "न्यूटॉन्सॉफ्ट.जेसन, संस्करण = 6.0.5.17707, संस्कृति = तटस्थ, पब्लिककेट टोकन = 30ad4fe6b2a6aeed" नहीं था।

फिर

  • बिल्ड आउटपुट विंडो पर जाने के लिए Ctrl-Alt-O
  • ड्रिलडाउन खोजने के लिए " चुना गया " खोजें।

... और हां, उन लोगों के लिए [निदान] संदेश की जानकारी को देखते हुए, यह इस अनजानता की खबर थी कि शहर में एक सम्मेलन है जिससे सभी 6.x संस्करण आंतरिक रूप से असेंबली संस्करण 6.0.0.0 , यानी केवल सेमवीर प्रमुख घटक असेंबली संस्करण में चला जाता है :)


जाहिर है इस समस्या के लिए कई सारे कारण हैं और इस प्रकार बहुत सारे समाधान हैं। मिश्रण में मेरा फेंकने के लिए, हमने एक असेंबली (System.Net.Http) को अपग्रेड किया जिसे पहले हमारे वेब प्रोजेक्ट में सीधे NuGet द्वारा प्रबंधित संस्करण में संदर्भित किया गया था। इस परियोजना के भीतर प्रत्यक्ष संदर्भ हटा दिया गया, लेकिन हमारी टेस्ट प्रोजेक्ट में अभी भी प्रत्यक्ष संदर्भ शामिल है। NuGet- प्रबंधित असेंबली का उपयोग करने के लिए दोनों परियोजनाओं को अपग्रेड करने से इस मुद्दे को हल किया गया।


दृश्य स्टूडियो में बिल्ड वर्बोसिटी को बदलने से सही दिशा में इंगित करने में मदद मिलेगी। वीएस में वर्बोसिटी बदलने के लिए नीचे दिए गए चरणों का पालन करें

1. Go to Tools->Options menu in VS
2. Open Projects and Solutions->Build and Run 
3. Change the value of the MSBuild project build output verbosity. 
   Pick one from Quiet, Minimal, Normal, Detailed and Diagnostic

निर्माण में बदलाव के लिए वीएस में आउटपुट विंडो (cntl + alt + o) देखें


पैकेज प्रबंधक कंसोल के माध्यम से Update-Package आदेश चलाएं

यह एमएसबी 3277 को ठीक करेगा, यह सभी संकुलों और सभी संबंधित असेंबली को पुनर्स्थापित कैसे करता है जो वे उच्चतम संस्करण के साथ आते हैं । केवल विशिष्ट पैकेज को अपडेट करना भी संभव है। या अगर चाहें तो अपडेट के बाद डाउनग्रेड करें, मेरे लिए यह निश्चित मुद्दा कुछ बार आया था। आपके पास कितने नजेट पैकेज हैं, इस प्रक्रिया के आधार पर, इस प्रक्रिया में कुछ मिनट लग सकते हैं।

आधिकारिक दस्तावेज़ों पर अधिक जानकारी https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages


मैं केवल दो संदेशों के बीच तुलना के साथ रूबेन के उत्तर का समर्थन कर सकता हूं:

और संदेश:

सी: \ प्रोग्राम फ़ाइलें (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1697,5): चेतावनी MSB3277: उसी आश्रित असेंबली के विभिन्न संस्करणों के बीच संघर्ष मिला जिन्हें हल नहीं किया जा सका। लॉग संदर्भ शब्दकोष विस्तृत होने पर इन संदर्भ विवादों को बिल्ड लॉग में सूचीबद्ध किया गया है।

तो, रुबेन का अधिकार- यह सच नहीं है। कोई भी संघर्ष नहीं है, बस एक लापता असेंबली। यह विशेष रूप से उबाऊ है जब परियोजना एक एएसपी.नेट आवेदन है, क्योंकि विचारों को मांग पर संकलित किया गया है , यानी, पहली बार प्रदर्शित होने से पहले। यह तब होता है जब असेंबली उपलब्ध हो जाती है। (शेष कोड के साथ विचारों को पूर्व-संकलित करने का एक विकल्प है, लेकिन यह एक और कहानी है ।) दूसरी तरफ, यदि आप डायग्नोस्टिक को वर्बोजिट सेट करते हैं तो आपको निम्न आउटपुट मिलता है:

सी: \ प्रोग्राम फ़ाइलें (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1697,5): चेतावनी MSB3245: इस संदर्भ को हल नहीं कर सका। असेंबली का पता नहीं लगा सका "System.Web.Razor, संस्करण = 3.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364e35, प्रोसेसर आर्किटेक्चर = एमएसआईएल"। यह सुनिश्चित करने के लिए जांचें कि असेंबली डिस्क पर मौजूद है। यदि यह संदर्भ आपके कोड द्वारा आवश्यक है, तो आप संकलन त्रुटियां प्राप्त कर सकते हैं।

नतीजतन, आपको बस इतना करना है कि:

  1. मैन्युअल रूप से असेंबली का संदर्भ जोड़ें (इसे डिस्क पर खोजें, शायद जीएसी, और इसे "प्रत्यक्ष" संदर्भ के रूप में जोड़ें), या
  2. इसे डाउनलोड करने के लिए NuGet पैकेज (यदि गैलरी में प्रकाशित किया गया है) का उपयोग करें और इसमें निहित असेंबली का संदर्भ लें।

here NuGet गैलरी के बारे में अधिक जानकारी। here एएसपी.नेट दृश्यों को प्रीकंपलिंग करने के बारे में अधिक जानकारी।


मैं बस इस में भाग गया और एक पैकेज को स्थानीय रूप से संदर्भित डीएलएस में बदलने के बाद समस्या। मुद्दा app.config में पुराना रनटाइम बाध्यकारी सामान था।


मैंने NuGet Packagaes को प्रबंधित करने से Microsoft ASP.NET MVC nuget.org को अनइंस्टॉल किया है और फिर इसे फिर से इंस्टॉल किया है। इसे पुन: इंस्टॉल करते समय इसे रेजर संस्करण से संबंधित सभी संघर्षों का समाधान किया गया। कोशिश करो ।


मैंने पाया कि, कभी-कभी, nuget संकुल अधिष्ठापित (जो मैं अनुमान लगा रहा हूं) .NET कोर आवश्यक घटकों या अन्य आइटम जो पहले से स्थापित ढांचे के साथ संघर्ष करते हैं। मेरा समाधान प्रोजेक्ट (.csproj) फ़ाइल खोलना था और उन संदर्भों को हटा देना था। उदाहरण के लिए, System.IO, System.Threading और ऐसे, माइक्रोसॉफ्ट.बीक्ल को हाल ही में स्थापित NuGet पैकेज के माध्यम से शामिल किया गया है। मेरी परियोजनाओं में उन लोगों के विशिष्ट संस्करणों का कोई कारण नहीं है, इसलिए मैं संदर्भों को हटाता हूं और प्रोजेक्ट बनाता है। उम्मीद है की वो मदद करदे।

आप "प्रोजेक्ट" के लिए अपनी प्रोजेक्ट फ़ाइल खोज सकते हैं और विवादों को हटा सकते हैं। अगर वे सिस्टम में शामिल हैं, तो उनसे छुटकारा पाएं, और निर्माण को काम करना चाहिए। यह इस मुद्दे के सभी मामलों का उत्तर नहीं दे सकता है - मैं यह सुनिश्चित कर रहा हूं कि आप जानते हैं कि मेरे लिए क्या काम किया :)

मैंने जो टिप्पणी की, उसका उदाहरण:

<!-- <Reference Include="System.Runtime, Version=2.6.9.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> -->
  <!-- <HintPath>$(SolutionDir)packages\Microsoft.Bcl.1.1.9\lib\net40\System.Runtime.dll</HintPath> -->
  <!-- <Private>True</Private> -->
<!-- </Reference> -->


msbuild Foo.sln /t:Rebuild /v:diag चलाएं msbuild Foo.sln /t:Rebuild /v:diag ( C:\Program Files (x86)\MSBuild\12.0\bin ) से कमांड लाइन से अपना समाधान बनाने के लिए और थोड़ा और विवरण प्राप्त करें, फिर .csproj. जो चेतावनी को लॉग करता है और अन्य संदर्भों के संदर्भों और संदर्भों की जांच करता है जो समान आम असेंबली का उपयोग करते हैं जो संस्करण में भिन्न है।

संपादित करें: आप VS2013 में सीधे निर्माण वर्बोजिटी सेट भी कर सकते हैं। Tools > Options मेनू पर जाएं, फिर Projects and Solutions और Diagnostic को एमएसबिल्ड वर्बोसिटी सेट करें।

संपादित करें: कुछ स्पष्टीकरण क्योंकि मुझे अभी एक मिल गया है। मेरे मामले में चेतावनी मुझे संदर्भ संदर्भ संवाद के विरोध में Resharper प्रॉम्प्ट का उपयोग करके एक संदर्भ जोड़ना था, जिसने इसे संस्करणहीन किया, भले ही v4 और v12 दोनों चुनने के लिए उपलब्ध हों।

<Reference Include="Microsoft.Build, Version=12.0.0.0, ..." />
<Reference Include="Microsoft.Build.Framework" />

बनाम

<Reference Include="Microsoft.Build, Version=12.0.0.0, ..." />
<Reference Include="Microsoft.Build.Framework, Version=12.0.0.0, ..." />

MSBuild लॉग में /v:diag verbosity में यह निम्न जैसा दिखता है। विवरण देकर दो संदर्भ विवादित: -

  There was a conflict between 
  "Microsoft.Build.Framework, Version=4.0.0.0, ..." and 
  "Microsoft.Build.Framework, Version=12.0.0.0, ...". (TaskId:16)

      "Microsoft.Build.Framework, Version=4.0.0.0, ..." was chosen because it was primary and 
      "Microsoft.Build.Framework, Version=12.0.0.0, ..." was not. (TaskId:16)

      References which depend on "Microsoft.Build.Framework, Version=4.0.0.0, ..." 
      [C:\...\v4.5.1\Microsoft.Build.Framework.dll]. (TaskId:16)

          C:\...\v4.5.1\Microsoft.Build.Framework.dll (TaskId:16)
            Project file item includes which caused reference "C:\...\v4.5.1\Microsoft.Build.Framework.dll". (TaskId:16)
              Microsoft.Build.Framework (TaskId:16)

      References which depend on "Microsoft.Build.Framework, Version=12.0.0.0, ..." 
      [C:\...\v12.0\Microsoft.Build.Framework.dll]. (TaskId:16)

          C:\...\v12.0\Microsoft.Build.dll (TaskId:16)
            Project file item includes which caused reference "C:\...\v12.0\Microsoft.Build.dll". (TaskId:16)
              Microsoft.Build, Version=12.0.0.0, ... (TaskId:16)

          C:\...\v12.0\Microsoft.Build.Engine.dll (TaskId:16)
            Project file item includes which caused reference "C:\...\v12.0\Microsoft.Build.Engine.dll". (TaskId:16)
              Microsoft.Build, Version=12.0.0.0, ... (TaskId:16)

C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3277: 
Found conflicts between different versions of the same dependent assembly that could not be resolved.  
These reference conflicts are listed in the build log when log verbosity is set to detailed. 
[C:\Users\Ilya.Kozhevnikov\Dropbox\BuildTree\BuildTree\BuildTree.csproj]




visual-studio-express