नगेट 'संकुल' तत्व को चेतावनी घोषित नहीं किया गया है


142

एक शोस्टॉपर नहीं है, लेकिन किसी प्रोजेक्ट में नगेट का उपयोग करते समय, यह इस आकृति के साथ एक package.config फ़ाइल बनाता है

<?xml version="1.0" encoding="utf-8"?>
<packages>
   ... your packages
</packages> 

यह वीएस में चेतावनी देता है

The 'packages' element is not declared.

समस्या का मूल मुझे लगता है कि xml घोषणा के साथ कुछ करना था।

इसके अलावा, मुझे लगता है कि डिफ़ॉल्ट परिभाषा पैकेज को चेतावनी नहीं फेंकनी चाहिए।

क्या किसी को पता है कि मुझे इसे क्या बदलना चाहिए ताकि मुझे यह चेतावनी न मिले? (यानी भले ही मैं इसे केवल तभी देख सकता हूं जब फ़ाइल खुली हो, यह कुछ CA नियमों के साथ लगातार चेतावनी के रूप में भी दिखाता है।)


3
मुझे इस विषय के लिए [यह समाधान] [१] मिला, जो मुझे लगता है कि बेहतर है। [१]: stackoverflow.com/questions/2833243/…
मारियो लोपेज़ १२'१३

1
tbh असली समाधान आधिकारिक स्कीमा जोड़ने के लिए है ... pls नीचे मेरा जवाब देखें
स्टीफन जेड कैमिलेरी

यहाँ github पर इसी मुद्दे पर है: github.com/NuGet/Home/issues/1836
dimaaan

जवाबों:


96

इस चेतावनी से छुटकारा पाने के लिए आप हमेशा 'package.config' के लिए सरल xsd स्कीमा बना सकते हैं। ऐसा करने के लिए, "package.xsd" नाम की फ़ाइल बनाएँ:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
      targetNamespace="urn:packages" xmlns="urn:packages">
  <xs:element name="packages">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="package" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="id" type="xs:string" use="required" />
            <xs:attribute name="version" type="xs:string" use="required" />
            <xs:attribute name="targetFramework" type="xs:string" use="optional" />
            <xs:attribute name="allowedVersions" type="xs:string" use="optional" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

इस फ़ाइल का स्थान (दो विकल्प)

  • 'पैकेज.कॉन्फिग' फ़ाइल के समान फ़ोल्डर में,
  • यदि आप packages.xsdकई परियोजनाओं को साझा करना चाहते हैं, तो इसे विज़ुअल स्टूडियो स्कीमा फ़ोल्डर में ले जाएं (पथ थोड़ा भिन्न हो सकता है, यह D:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemasमेरे लिए है)।

फिर, फ़ाइल <packages>में टैग संपादित करें packages.config( xmlnsविशेषता जोड़ें ):

<packages xmlns="urn:packages">

अब चेतावनी गायब हो जानी चाहिए (भले ही पैकेज ।config फ़ाइल Visual Studio में खुली हो)।


1
क्या आपको XSL की दूसरी पंक्ति को संशोधित करने की ज़रूरत नहीं है: <xs: स्कीमा xmlns: xs = " w3.org/2001/XMLSchema " targetNamespace = "urn: संकुल" xmlns = urn: package ">
उरी

1
क्या आप जानते हैं कि Visual Studio उस xsd फ़ाइल को क्यों नहीं बना रहा है?
एंडर्स लिंडन

1
targetFrameworkxml स्कीमा फ़ाइल में u मिस्ड विशेषता। मुझे त्रुटि हो रही हैtargetFramework attribute is not defined
shashwat

2
मैंने पाया कि इकाई ढांचे के साथ आपके समाधान का उपयोग करते हुए, NuGet कंसोल मेरे पैकेज को सही ढंग से पार्स नहीं कर सकता है और मुझे बताता रहा कि EnitityFramework पैकेज मेरी परियोजना में स्थापित नहीं किया गया था। मैं VSG3 परम अद्यतन 2 पर NuGet 2.8.50313.46 के साथ EF 6.1.0 का उपयोग कर रहा हूं।
मिस्टरफ्रैब

7
यह समाधान vs2012 / nuget में अनुपलब्ध संकुल सुविधा की स्वचालित स्थापना को तोड़ता है। चेतावनी चली गई थी, लेकिन मुझे यह पता लगाने में घंटों का समय लगा कि क्यों vs2012 अब लापता पैकेजों को स्थापित नहीं करता है। तो बेहतर समाधान ( stackoverflow.com/questions/2833243/… में उत्तर ) मेनू XML के माध्यम से एक स्कीमा बनाना है -> स्कीमा बनाएँ (बनाम 2012 स्वचालित रूप से उपयोग किए गए स्कीमा की सूची में जोड़ देगा) - परिवर्तन को बदलने की कोई आवश्यकता नहीं है। कॉन्फिग, अन्य फीचर्स का कोई तोड़ नहीं
13

188

आप इसे तभी देखेंगे जब फाइल ओपन होगी। जब आप फ़ाइल को Visual Studio में बंद कर देंगे तो चेतावनी दूर हो जाएगी

http://nuget.codeplex.com/discussions/261638


8
हा, समस्या की अनदेखी करने से यह दूर हो जाता है: डी। लेकिन क्या आप देख सकते हैं आप को चोट लगी है?
JSideris

5
सही @ वृत्तिका हमें इस पर ध्यान नहीं देना चाहिए .. इस चेतावनी का अन्य प्रभाव है। यह द्वारा जनरेट किया गया है nugetऔर nugetजानता है कि इस फ़ाइल का उपयोग कैसे किया जाए।
शशवत

हाँ, यह स्वीकृत उत्तर होना चाहिए। ऊपर एक कारण है कि मुझे काम में विग क्यों पहनना है।
नीलहिलेज

@neilhighley धन्यवाद दोस्तों। इस मुद्दे को काफी याद न करें, लेकिन खुशी है कि मैं मदद कर सकता था। LOL
त्ज़वी ग्रेगरी केदानोव

@RyanRodemoyer धन्यवाद दोस्तों। इस मुद्दे को काफी याद न करें, लेकिन खुशी है कि मैं मदद कर सकता था। LOL
त्ज़वी ग्रेगरी केदानोव

116

वास्तव में इसका सही उत्तर सिर्फ अपने दस्तावेज़ में स्कीमा जोड़ना है, जैसे

<packages xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">

...और आपने कल लिया :)

यदि XSD पहले से ही कैश और अनुपलब्ध नहीं है, तो आप इसे NuGet कंसोल से निम्नानुसार जोड़ सकते हैं

Install-Package NuGet.Manifest.Schema -Version 2.0.0

एक बार यह हो जाने के बाद, जैसा कि नीचे टिप्पणी में दिया गया है, आप इसे अपने वर्तमान फ़ोल्डर से आधिकारिक स्कीमा फ़ोल्डर में ले जाना चाहते हैं जो इसमें पाया गया है

%VisualStudioPath%\Xml\Schemas

मैं उस URL पर कैसे नहीं जा सकता हूं?
andrewb

4
आप यह कहने में सही हैं कि वर्तमान में xsd सुलभ नहीं है, उन्होंने कहा, उनकी W3C परिभाषा के अनुसार, जैसा कि यह भ्रामक है, xmlns (नाम स्थान) घोषणा एक URI के रूप में एक स्ट्रिंग से अधिक कुछ नहीं है, और यह आवश्यक नहीं है, न ही सुझाव दिया गया है, कि वास्तव में एक संसाधन वहां उपलब्ध कराया जाए ( en.wikipedia.org/wiki/XML_namespace )
स्टीफन जेड कैमिलेरी

1
हां, निश्चित रूप से, यह xsd ही है। दृश्य स्टूडियो वास्तव में स्कीमा को मान्य नहीं करता है, यह पुस्तकालय / असेंबली है जो एक्सएमएल दस्तावेज़ का उपभोग कर रहा है जो सत्यापन करेगा। केवल कारण वी.एस. को यह जानकारी प्रदान करने की आवश्यकता है। जब संसाधन नहीं मिल सकता है, तो वीएस xsd के पूर्व-कैश्ड उदाहरण का उपयोग कर सकता है, जो% VsInstallDir% \ xml \ स्कीमा में पाया जा सकता है
स्टीफन जेड

4
इसलिए अब मुझे केवल एक चेतावनी संदेश के बजाय 13 जानकारी संदेश मिल रहे हैं ("स्कीमा जानकारी नहीं मिल पाई ...") एक कदम पीछे की तरह महसूस होता है :-)
Riegardt Steyn

1
ध्यान दें, मैंने हाल ही में उन नामों को जोड़ने के साथ समस्याएँ व्यक्त की हैं जो नुगेट को खराब कर रहे हैं। यह दुर्भाग्यपूर्ण है क्योंकि मैंने चेतावनियों को पसंद नहीं किया है।
मेह-उक

7

कोई भी उत्तर आपकी समस्या को स्थायी रूप से हल नहीं करेगा। यदि आप XSD (Xml मेनू से, "स्कीमा बनाएँ" चुनें) के पथ पर जाते हैं, तो आपको पैकेज प्रबंधक के साथ समस्याएँ समाप्त हो जाएँगी क्योंकि यह एक नया पैकेज जोड़ने पर आपके पैकेजों को साफ कर देगा ।config फ़ाइल।

जब आप इसका उपयोग नहीं करते हैं तो फ़ाइल को बंद करके सबसे अच्छा समाधान केवल अनदेखा किया जाता है।


+1; बस ध्यान रखें कि यह भी काम करता है (और पैकेज मैनेजर को नहीं तोड़ेगा)।
rsenna

5

समस्या यह है, आपको इसके लिए एक xsd स्कीमा की आवश्यकता है packages.config

यह है कि आप एक स्कीमा कैसे बना सकते हैं ( मैंने इसे यहां पाया) :

अपनी कॉन्फ़िगरेशन फ़ाइल खोलें -> XML -> स्कीमा बनाएँ

यहां छवि विवरण दर्ज करें

यह आपके लिए निर्माण करेगा packages.xsd, और इसे विजुअल स्टूडियो में खोलेगा:

यहां छवि विवरण दर्ज करें

मेरे मामले में, packages.xsdइस रास्ते के तहत बनाया गया था:

C: \ Users \ MyUserName \ AppData \ Local \ अस्थायी

अब मैं packages.xsdएक Temp फ़ोल्डर से संदर्भ नहीं लेना चाहता , लेकिन मैं चाहता हूं कि इसे मेरे समाधान में जोड़ा जाए और स्रोत नियंत्रण में जोड़ा जाए, ताकि अन्य उपयोगकर्ता इसे प्राप्त कर सकें ... इसलिए मैंने प्रतिलिपि बनाईpackages.xsd इसे अपने समाधान फ़ोल्डर में और पेस्ट किया। फिर मैंने फ़ाइल को अपने समाधान में जोड़ा:

1. packages.xsdअपने समाधान के रूप में एक ही फ़ोल्डर में कॉपी करें

2. वीएस से, समाधान पर राइट क्लिक करें -> एड -> मौजूदा आइटम ... और फिर जोड़ेंpackages.xsd

यहां छवि विवरण दर्ज करें

तो, अब हमने इसे बनाया packages.xsdऔर समाधान में जोड़ा। बस हमें इस स्कीमा का उपयोग करने के लिए कॉन्फिग फाइल को बताना होगा।

कॉन्फ़िगरेशन फ़ाइल खोलें, फिर शीर्ष मेनू से चुनें:

XML -> स्कीमा ...

अपना जोड़ें packages.xsdऔर चुनें इस स्कीमा का उपयोग करें (नीचे देखें)

यहां छवि विवरण दर्ज करें


4

ऐसा इसलिए होता है क्योंकि VS इस फाइल के स्कीमा को नहीं जानता है। ध्यान दें कि यह फ़ाइल एक कार्यान्वयन विवरण की अधिक है, और कुछ ऐसा नहीं है जिसे आपको सामान्य रूप से सीधे खोलने की आवश्यकता है। इसके बजाय, आप किसी प्रोजेक्ट में स्थापित संकुल को प्रबंधित करने के लिए NuGet संवाद का उपयोग कर सकते हैं।


इससे कोई फर्क नहीं पड़ता कि आप पैकेज स्थापित करने के लिए NuGet का उपयोग करते हैं। एक ही `package.config 'फ़ाइल बनाया गया है, और यह अभी भी उस संकलक चेतावनी उत्पन्न करता है।
प्रोफेक

0

यह काम करता है और एक नया पैकेज जोड़ने के बाद भी बना रहता है:

निम्नलिखित जोड़ें! <संकुल> तत्व के ऊपर DOCTYPE:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE packages [
  <!ELEMENT packages (package*)>
  <!ELEMENT package EMPTY>
  <!ATTLIST package
  id CDATA #REQUIRED
  version CDATA #REQUIRED
  targetFramework CDATA #REQUIRED
  developmentDependency CDATA #IMPLIED>
]>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.