NuGet 패키지에 클래스 라이브러리 용 Xml 문서를 어떻게 포함하나요?


104

C # 클래스 라이브러리 용 NuGet 패키지를 만들고 있으며 생성 된 Xml 설명서를 라이브러리와 함께 포함하고 싶습니다. 이것은 내 nuspec 파일입니다.

<?xml version="1.0" encoding="utf-8"?>
<package>
  <metadata>
    <id>MyLibrary</id>
    <version>1.0.0.0</version>
    <authors>John Nelson</authors>
    <language>en-US</language>
    <description>A C# class library</description>
  </metadata>
  <files>
    <file src="..\..\build\MyLibrary.dll" target="lib\Net40" />
    <file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
  </files>
</package>

이 명령으로 패키지를 빌드 할 때 :

nuget pack MyLibrary.nuspec

오류가 발생합니다. 줄을 제거하면 :

<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />

NuGet.exe가 nupkg를 성공적으로 만듭니다. 패키지의 압축을 풀고 내용이 올바른지 확인할 수도 있습니다. 내가 뭘 잘못하고 있죠? xml 파일이 다른 대상 디렉토리로 이동해야합니까?


패키지를 빌드하는 데 사용하는 명령은 무엇입니까?
패닉 대령

@ColonelPanic은 명령 및 문서 링크로 질문을 업데이트했습니다.
John Nelson

고마워요 존. csproj를 직접 패키징하고 nuget pack library.csproj있지만 (nuspec이 없습니다) 수정은 동일하게 작동합니다.
패닉 대령

답변:


99

문제는 내가 사용하고있는 빌드 구성에 대해 "Xml 문서 생성"을 확인하지 않았다는 것입니다. 그 nuspec이 맞습니다.

여기에 이미지 설명 입력


6
알아 둘만 한. GUI를 사용하여 패키지를 만들려고했는데 XML 파일을 lib 대신 콘텐츠 폴더로 이동 시키려고했습니다. 옳지 않은 것 같아서 두 번째 의견을 듣고 싶었습니다. 이 게시물이있어서 다행입니다. :-)
Mike Loux

12

.NET Core / Standard에서는 프로젝트 XML 파일을 편집하여이를 수행 할 수 있습니다. 예를 들면 다음과 같습니다.

<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

<PropertyGroup>
    <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
</PropertyGroup>

그러면 문서가 출력 어셈블리 옆에 XML 파일로 출력됩니다.

편집 : 일단 활성화 GenerateDocumentationFile하면 부수적으로 전체 문서 태그를 추가하지 않은 공개 방법에 대한 많은 경고가 표시됩니다. 이러한 경고를 비활성화하려면 다음을 추가하십시오 PropertyGroup.

<NoWarn>$(NoWarn);1591</NoWarn>

<GenerateDocumentationFile>결과가 <DocumentationFile>이미 있으므로 둘 중 하나만 필요하다고 생각합니다. docs.microsoft.com/en-us/dotnet/csharp/codedoc
Kapé

Specifiying <DocumentationFile>자신 단지 출력에 당신이 원하는 어느 파일을 수행 할 수 있습니다. 지정하지 않으면 문자 그대로 위에서 제공 한 경로에 배치한다고 생각합니다.
bytedev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.