चेतावनी: MyProject.csproj को संदर्भित करने वाली सभी परियोजनाओं को nuget पैकेज Microsoft.Bcl.Build स्थापित करना होगा


90

मेरे पास 2012 में ASP.NET MVC 4 ऐप विकसित हुआ है। ऐप में एक मुख्य परियोजना (MyProject), एक यूनिट-टेस्ट प्रोजेक्ट (MyProject.Tests), एक Azure परिनियोजन परियोजना (MyProject.Azure), और एक युगल है सामान्य प्रयोजन पुस्तकालय परियोजनाओं।

जब मैं समाधान या मुख्य परियोजना पर राइट-क्लिक करता हूं और प्रबंधित करें NuGet पैकेज का चयन करता हूं, तो मुझे Microsoft अद्यतनों का एक गुच्छा दिखाई देता है जो कि पिछले महीने या तो स्पष्ट रूप से उपलब्ध हैं। यदि मैं अपडेट ऑल बटन पर क्लिक करता हूं, तो अपडेट बिना किसी स्पष्ट समस्या के स्पष्ट रूप से इंस्टॉल हो जाते हैं, लेकिन जब मैं समाधान का निर्माण करता हूं तो मुझे यह त्रुटि मिलती है:

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build

ठीक है, इसलिए मेरे पास दो प्रोजेक्ट हैं जो MyProject का संदर्भ देते हैं: MyProject.Tests और MyProject.Azure। मैं MyProject.Tests पर राइट-क्लिक कर सकते हैं, ManageNuGet पैकेज का चयन कर सकते हैं और Microsoft.Bcl.Build जोड़ सकते हैं। कि दो चेतावनियों में से एक से छुटकारा मिलता है। लेकिन VS मुझे MyProject.Azure प्रोजेक्ट के लिए NuGet पैकेज को प्रबंधित करने का विकल्प नहीं देता है

मैं Microsoft.Bcl.Build पैकेज को Azure परिनियोजन प्रोजेक्ट में कैसे जोड़ूँ?

संपादित करें:

उपयोगकर्ता प्रफुल्लित होने के लिए धन्यवाद , अब मुझे पता है कि इस समस्या के लिए एक Microsoft कनेक्ट मुद्दा यहां खोला गया है


2
कनेक्ट मुद्दे के संदर्भ के लिए धन्यवाद, यह एक कष्टप्रद समस्या है।
पॉल कीस्टर

1
तैनाती परियोजना का निर्माण करते समय चेतावनी से संबंधित , एक बग भी है जो परियोजना को प्रकाशित करते समय एक सतर्क चेतावनी का कारण बनता है । कनेक्ट से संबंधित प्रकाशित बग भी बताया गया है । मैं एक समाधान का पता नहीं है।
एडवर्ड ब्रे

3
ऐसा ही मुद्दा मुझे वाईएक्स परियोजनाओं के लिए होता है, जिसमें अन्य परियोजनाओं के संदर्भ हैं (परियोजना के उत्पादन के उद्देश्य के लिए उर्फ। "गर्मी")। यह कोई मतलब नहीं है जो भी एक WiX इंस्टॉलर परियोजना के लिए NuGet संकुल स्थापित करने के लिए! अरे !!
जान

1
कनेक्ट मुद्दे के लिए लिंक अब 404 रिटर्न connect.microsoft.com/VisualStudio/feedback/details/789839/...
रयान गेट्स

जवाबों:


54

यदि आप चेतावनी को डबल क्लिक करते हैं तो यह आपको चेतावनी को अक्षम करने के निर्देश देता है।

यह उन परियोजनाओं से अनुमानों के लिए अक्षम करना सुरक्षित है जो अभी तक नुगेट का समर्थन नहीं करते हैं।

Microsoft.Bcl.Build.targets से कॉपी की गई बोल्ड कॉपी में नीचे का भाग देखें ।

BclBuildValidateNugetPackageReferences

यह लक्ष्य प्रोजेक्ट संदर्भ के लिए SkipValidatePackageReferences = संदर्भ के लिए सही सेट करके अक्षम किया जा सकता है :

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>

4
आर्थर, क्या आप प्रॉपर्टीज के बजाय एडिशनलप्रोटेक्ट्स मेटाडेटा मान सेट करने का प्रयास कर सकते हैं?
दीस 14

5
@ मैं इस समस्या को एक वाईएक्स प्रोजेक्ट के साथ सम्‍मिलित कर रहा था और प्रॉपर्टीज के कामों के बजाए एडिशनल प्रोपराइटर्‍स सेट करना चाहता था। मुझे यह जानने में दिलचस्पी है कि हालांकि
lc।

3
यह केवल समाधान के निर्माण के लिए काम करता है, लेकिन जब आप अपने स्टार्टअप प्रोजेक्ट के रूप में azure प्रोजेक्ट के साथ वास्तव में 'रन' का उपयोग करते हैं, तो आप फिर से चेतावनी देखेंगे।
eoleary

2
निर्माण पर भी काम न करें। वीएस 2015 सामुदायिक संस्करण।
Artyom

2
VS2015 प्रोफेशनल में काम नहीं किया। इस लाइन को जोड़ने के लिए मेरे पास एक ही मुद्दा है।
अकलेक्स

63

TheESJ द्वारा प्रदान किया गया उत्तर सही है, हालाँकि शब्दांकन मेरे लिए स्पष्ट नहीं था। चूंकि मैं उत्तर पर टिप्पणी नहीं कर सकता, इसलिए मैं यहां अधिक विवरण प्रदान करूंगा। विशेष रूप से, मुझे एक एज़्योर परियोजना के साथ यह समस्या हो रही थी और चेतावनी को दूर करने के लिए निम्नलिखित समाधान की आवश्यकता थी:

जब आप VisualStudio में चेतावनी को डबल-क्लिक करते हैं, तो आपको Microsoft.BclBuild.targets फ़ाइल में BclBuildValidateNugetPackageReferences लक्ष्य पर ले जाया जाएगा। वास्तविक लक्ष्य तत्व के ऊपर, आपको एक बड़ा टिप्पणी ब्लॉक ढूंढना चाहिए जो परियोजना संदर्भ जांच को अक्षम करने की बात करता है। चूंकि Azure परियोजनाओं में कोई लाइब्रेरी संदर्भ नहीं हो सकता है, इसलिए यह Azure प्रोजेक्ट्स के लिए इस विशेष बिल्ड लक्ष्य की आवश्यकताओं को पूरा करना असंभव है।

समाधान? Azure प्रोजेक्ट से संदर्भ की जाँच अक्षम करें क्योंकि यह वास्तव में एक नगेट पैकेज संदर्भ जोड़ना असंभव है।

उदाहरण

तो, मान लें कि हमारे पास दो प्रोजेक्ट हैं: MyAzureProject.ccproj जो MyProject.csproj का संदर्भ देता है । इन कदमों का अनुसरण करें:

  1. समाधान एक्सप्लोरर में "MyAzureProject" पर राइट-क्लिक करें और "प्रोजेक्ट फ़ाइल संपादित करें" चुनें।
  2. "MyProject।" यह कुछ इस तरह दिखना चाहिए:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. ProjectReference तत्व के अंदर निम्न तत्व जोड़ें:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. आपका प्रोजेक्ट संदर्भ अब इस तरह दिखना चाहिए:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. समाधान एक्सप्लोरर में "MyAzureProject" पर राइट-क्लिक करें और "रीलोड प्रोजेक्ट" चुनें।

अब आपको पुनर्निर्माण करने में सक्षम होना चाहिए और त्रुटि दूर होनी चाहिए।


17
वीएस के मेरे संस्करण में मुझे पहले राइट-क्लिक और "अनलोड प्रोजेक्ट" करना होगा, इससे पहले कि मैं प्रोजेक्ट फाइल को संपादित करने के लिए राइट-क्लिक कर
सकूं

2
क्या आपका मतलब MyAzureProject.ccprojइसके बजाय था MyAzureProject.csproj?
एडवर्ड ब्रे जूल

यह केवल तभी काम करता है जब मैं संदर्भित प्रोजेक्ट * .csproj फ़ाइल में '<गुण> SkipValidatePackageReferences = true </ Properties>' जोड़ देता हूं। सिर्फ संपादन * .ccproj काम नहीं करता है।
एलेक्सी

1
@ पायस यह एक छोटी सी विशेषता है, लेकिन वीएस के कई संस्करणों के लिए उपलब्ध उत्पादकता पावर टूल्स में 'पावर कमांड्स' के तहत 'एडिट प्रोजेक्ट फाइल' संदर्भ मेनू विकल्प है। यह प्रोजेक्ट को अनलोड करेगा और एक क्लिक में आपके लिए प्रोजेक्ट फाइल खोलेगा।
जेफ

16

मैंने उसी समस्या का सामना किया और Microsoft को अद्यतन करने का प्रयास कर रहा था। Bcl.Build.targets; जिससे मदद नहीं मिली।

कुछ जांच के बाद पाया गया कि Azure सेवा परियोजना की .sproj फ़ाइल को शामिल करने के लिए संशोधित किया जाना चाहिए <Properties>SkipValidatePackageReferences=true</Properties>

यह @TheESJ के उत्तर से स्पष्ट नहीं था और इसलिए अलग उत्तर पोस्ट करने का निर्णय लिया गया। @TheESJ को धन्यवाद।


2

मुझे कई बार इस मुद्दे का सामना करना पड़ा, और गुण विधि वास्तव में काम करती है, लेकिन जब एक विक्स परियोजना के साथ काम करते हैं, तो मुझे इसके बजाय निम्नलिखित करना था:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

जब मैंने गुण Xml नोड का उपयोग किया, तो मुझे एक नई त्रुटि मिली:

OutputPath प्रॉपर्टी 'MyInstallerProject.csproj' प्रोजेक्ट के लिए सेट नहीं है। कृपया सुनिश्चित करें कि आपने इस परियोजना के लिए कॉन्फ़िगरेशन और प्लेटफ़ॉर्म का एक मान्य संयोजन निर्दिष्ट किया है। कॉन्फ़िगरेशन = 'डीबग' प्लेटफ़ॉर्म = 'x86'। यह त्रुटि तब भी प्रकट हो सकती है यदि कोई अन्य प्रोजेक्ट इस प्रोजेक्ट के प्रोजेक्ट-टू-प्रोजेक्ट संदर्भ का पालन करने का प्रयास कर रहा है, यह प्रोजेक्ट अनलोड किया गया है या समाधान में शामिल नहीं है, और संदर्भित प्रोजेक्ट समान या समकक्ष का उपयोग करके नहीं बनाता है कॉन्फ़िगरेशन या प्लेटफ़ॉर्म।

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