너겟 '패키지'요소가 경고로 선언되지 않았습니다.


142

showstopper는 아니지만 프로젝트에서 nuget을 사용할 때이 모양의 packages.config 파일을 만듭니다.

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

이것은 VS에서 경고를줍니다.

The 'packages' element is not declared.

문제의 기원은 내가 생각하는 XML 선언과 관련이 있습니다.

또한 기본 정의 패키지는 경고를 발생시키지 않아야한다고 생각합니다.

이 경고 메시지가 나타나지 않도록 무엇을 변경해야하는지 알고 있습니까? (즉, 파일이 열려있을 때만 볼 수있는 경우에도 특정 CA 규칙이 설정되어 있으면 계속 경고로 표시됩니다.)


3
이 주제에 대해 [이 솔루션] [1]을 찾았습니다. [1] : stackoverflow.com/questions/2833243/…
마리오 로페즈

1
진짜 해결책은 공식 스키마를 추가하는 것입니다 ... pls는 내 대답을 아래에서 참조하십시오
Stefan Z Camilleri

다음은 GitHub의에 문제를 해당된다 github.com/NuGet/Home/issues/1836을
dimaaan

답변:


96

'packages.config'에 대해 간단한 xsd 스키마를 만들어이 경고를 제거 할 수 있습니다. 이렇게하려면 "packages.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.config'파일과 같은 폴더에
  • packages.xsd여러 프로젝트에서 공유 하려면 Visual Studio Schemas 폴더로 이동하십시오 (경로가 약간 다를 수 있음 D:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas).

그런 다음 파일 <packages>에서 태그를 편집 packages.config하십시오 ( xmlns속성 추가 ).

<packages xmlns="urn:packages">

이제 패키지가 Visual Studio에서 열린 경우에도 경고가 사라집니다.


1
XSL의 두 번째 줄을 수정하지 않아도됩니다 : <xs : schema xmlns : xs = " w3.org/2001/XMLSchema = "urn : packages"xmlns = "urn : packages">
Uri

1
Visual Studio에서 해당 xsd 파일을 만들지 않는 이유를 알고 있습니까?
Anders Lindén

1
targetFrameworkXML 스키마 파일의 속성이 누락 되었습니다. 오류가 발생합니다targetFramework attribute is not defined
shashwat

2
엔터티 프레임 워크와 함께 솔루션을 사용하면 NuGet 콘솔이 package.config를 올바르게 구문 분석 할 수 없으며 EnitityFramework 패키지가 프로젝트에 설치되지 않았다는 메시지가 계속 나타납니다. VS2013 Ultimate Update 2에서 NuGet 2.8.50313.46과 함께 EF 6.1.0을 사용하고 있습니다.
misterfrb

7
이 솔루션은 vs2012 / nuget에서 누락 된 패키지 기능의 자동 설치를 중단합니다. 경고는 사라졌지 만 vs2012가 더 이상 누락 된 패키지를 더 이상 설치하지 않는 이유를 알아내는 데 몇 시간이 걸렸습니다. 따라서 더 나은 솔루션 ( stackoverflow.com/questions/2833243/…의 답변 )은 메뉴 XML-> 스키마 생성을 통해 스키마를 생성하는 것입니다 (2012 년에 사용 된 스키마 목록에 자동으로 추가 함). 설정, 다른 기능의 중단 없음
알 수 없음

188

파일이 열려있을 때만 볼 수 있습니다. Visual Studio에서 파일을 닫으면 경고가 사라집니다.

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


8
하, 문제를 무시하면 문제가 해결됩니다. D. 그러나 당신이 볼 수없는 것이 당신을 다치게 할 수 있습니까?
JSideris

5
오른쪽 @gregory 우리는 이것을 무시해야합니다.이 경고의 다른 영향이 있습니다. 그것은에 의해 생성 nugetnuget아주 잘이 파일을 사용하는 방법을 알고있다.
shashwat

네, 이것이 정답입니다. 위의 것은 직장에서 가발을 착용 해야하는 이유 중 하나입니다.
neilhighley

@neilhighley 감사합니다. 문제를 기억하지 못하지만 내가 도와 줄 수있어서 기쁘다. LOL
Tzvi Gregory Kaidanov

@RyanRodemoyer 감사합니다. 문제를 기억하지 못하지만 내가 도와 줄 수있어서 기쁘다. LOL
Tzvi Gregory Kaidanov

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 )
Stefan Z Camilleri

1
예, 가장 확실하게 xsd 자체입니다. Visual Studio는 실제로 스키마의 유효성을 검사하지 않으며 유효성 검사를 수행하는 XML 문서를 소비하는 라이브러리 / 어셈블리입니다 .VS가이 정보를 필요로하는 이유는 인텔리전스를 제공하는 것입니다. 리소스를 찾을 수없는 경우 VS는 캐시 된 xsd의 사전 캐시 된 인스턴스를 사용하고있을 수 있습니다.이 인스턴스는 % VsInstallDir % \ xml \ Schemas
Stefan Z Camilleri

4
그래서 지금 나는 단지 하나의 경고 메시지 대신 13 개의 정보 메시지 ( "스키마 정보를 찾을 수 없습니다 ...")를 받고 있습니다. 일종의 후퇴처럼 느껴집니다 :-)
Riegardt Steyn

1
최근에 NuGet을 망칠 네임 스페이스를 추가하는 데 문제가있었습니다. 경고를 원하지 않는 것은 불행합니다.
meh-uk

7

어떤 대답도 문제를 영구적으로 해결하지는 못합니다. XSD 추가 경로 (Xml 메뉴에서 "스키마 생성"선택)로 이동하면 새 패키지를 추가 할 때 packages.config 파일이 정리되므로 패키지 관리자에 문제가 발생합니다.

가장 좋은 해결책은 파일을 사용하지 않을 때 파일을 닫아서 무시하는 것입니다.


+1; 그냥 인식 또한 작동 (패키지 관리자를 중단하지 않을 것이다).
rsenna 1

5

문제는에 대한 xsd 스키마가 필요하다는 것입니다 packages.config.

이것은 스키마를 만드는 방법입니다 ( 여기에서 찾았습니다) .

구성 파일-> XML-> 스키마 작성을여십시오.

여기에 이미지 설명을 입력하십시오

이렇게하면 a가 만들어 packages.xsd지고 Visual Studio에서 열립니다.

여기에 이미지 설명을 입력하십시오

내 경우에는 packages.xsd이 경로 아래에 작성되었습니다.

C : \ Users \ MyUserName \ AppData \ Local \ Temp

이제 packages.xsdTemp 폴더에서 를 참조하고 싶지 않지만 솔루션에 추가하고 소스 제어에 추가하여 다른 사용자가 얻을 수 있기를 원하므로 복사했습니다.packages.xsd 하여 솔루션 폴더에 붙여 넣었습니다. 그런 다음 파일을 솔루션에 추가했습니다.

1. packages.xsd솔루션과 같은 폴더에 복사

2. VS에서 솔루션-> 추가-> 기존 항목 ...을 마우스 오른쪽 버튼으로 클릭 한 다음 추가packages.xsd

여기에 이미지 설명을 입력하십시오

이제 우리는 packages.xsd 그것을 솔루션에 추가했습니다. 구성 파일에이 스키마를 사용하도록 지시하기 만하면됩니다.

구성 파일을 연 다음 최상위 메뉴에서 다음을 선택하십시오.

XML-> 스키마 ...

을 추가 하고이 스키마 사용 (아래 참조)을 packages.xsd선택 하십시오.

여기에 이미지 설명을 입력하십시오


4

VS가이 파일의 스키마를 모르기 때문에 발생합니다. 이 파일은 구현에 대한 자세한 내용이며 일반적으로 직접 열어야하는 것은 아닙니다. 대신 NuGet 대화 상자를 사용하여 프로젝트에 설치된 패키지를 관리 할 수 ​​있습니다.


NuGet을 사용하여 패키지를 설치하는 것은 중요하지 않습니다. 동일한`packages.config '파일이 빌드되며 여전히 해당 컴파일러 경고를 생성합니다.
ProfK

0

새 패키지를 추가 한 후에도 작동하며 유지됩니다.

<packages> 요소 위에 다음! 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>
]>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.