Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 4개 있습니다.)
개발 환경 구성: 296. .NET Core 프로젝트를 NuGet Gallery에 배포하는 방법
; https://www.sysnet.pe.kr/2/0/11034

.NET Framework: 793. C# - REST API를 이용해 NuGet 저장소 제어
; https://www.sysnet.pe.kr/2/0/11696

개발 환경 구성: 423. NuGet 패키지 제작 - Native와 Managed DLL을 분리하는 방법
; https://www.sysnet.pe.kr/2/0/11793

개발 환경 구성: 494. NuGet - nuspec의 패키지 스키마 버전(네임스페이스) 업데이트 방법
; https://www.sysnet.pe.kr/2/0/12234




NuGet - nuspec의 패키지 스키마 버전(네임스페이스) 업데이트 방법

지난 글에서,

C# - Source Generator를 적용한 XmlCodeGenerator
; https://www.sysnet.pe.kr/2/0/12228

만든 XmlSrcGenerator를 위한 nuspec은 대충 다음과 같은 식입니다.

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>XmlSrcGenerator</id>
    <version>1.0.4</version>
    <title>C# Source Generator with XML + XSLT</title>
    <authors>SeongTae Jeong</authors>
    <owners>SeongTae Jeong</owners>
    <developmentDependency>true</developmentDependency>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <license type="expression">MIT</license>
    <licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
    <projectUrl>https://github.com/stjeong/XmlCodeGenerator</projectUrl>
    <description>C# Source Generator with XML + XSLT (same as https://marketplace.visualstudio.com/items?itemName=SeongTaeJeong.XmlCodeGenerator)</description>
    <tags>Analyzers CSharp xml xslt</tags>
  </metadata>
</package>

그런데, 여기서 package 노드의 xmlns를 다음과 같이 업데이트해봤는데요,

<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">

이상하게 "nuget pack"을 한 후 생성된 nupkg의 압축을 해제해서 확인해 보면 다시 "http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"로 돌아가 있는 것을 확인할 수 있습니다. 혹시 업데이트 방법이 없을까요? ^^

그래서 찾아봤더니 다음의 글이 나옵니다.

How to specify Nuget schema?
; https://stackoverflow.com/questions/33225461/how-to-specify-nuget-schema

그러니까, 저 스키마 버전은 nuget.exe가 내부적으로 자동 지정한다는 것입니다. 그러면서 소스 코드 링크를 걸어주었는데, 실제로 다음과 같은 규칙을 확인할 수 있습니다.

// PackageBuilder
// https://github.com/NuGet/NuGet2/blob/2.8.7/src/Core/Authoring/PackageBuilder.cs#L284-L299

private static int DetermineMinimumSchemaVersion(Collection<IPackageFile> Files)
{
    if (HasXdtTransformFile(Files))
    {
        // version 5
        return ManifestVersionUtility.XdtTransformationVersion;
    }

    if (RequiresV4TargetFrameworkSchema(Files))
    {
        // version 4
        return ManifestVersionUtility.TargetFrameworkSupportForDependencyContentsAndToolsVersion;
    }

    return ManifestVersionUtility.DefaultVersion;
}

// ManifestSchemaUtility
// https://github.com/NuGet/NuGet2/blob/2.8.7/src/Core/Authoring/ManifestVersionUtility.cs#L25-L52

private static int GetMaxVersionFromMetadata(ManifestMetadata metadata)
{
    // Important: check for version 5 before version 4
    bool referencesHasTargetFramework =
        metadata.ReferenceSets != null &&
        metadata.ReferenceSets.Any(r => r.TargetFramework != null);

    if (referencesHasTargetFramework)
    {
        return TargetFrameworkSupportForReferencesVersion;
    }

    bool dependencyHasTargetFramework =
        metadata.DependencySets != null &&
        metadata.DependencySets.Any(d => d.TargetFramework != null);
    if (dependencyHasTargetFramework)
    {
        return TargetFrameworkSupportForDependencyContentsAndToolsVersion;
    }

    SemanticVersion semanticVersion;
    if (SemanticVersion.TryParse(metadata.Version, out semanticVersion) && !String.IsNullOrEmpty(semanticVersion.SpecialVersion))
    {
        return SemverVersion;
    }

    return DefaultVersion;
}

여러분들은 저처럼 애쓰지 말라는 의미로 기록을 남깁니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 6/19/2020]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13854정성태12/27/20245865C/C++: 186. Golang - 콘솔 응용 프로그램을 NT 서비스를 지원하도록 변경파일 다운로드1
13853정성태12/26/20244807디버깅 기술: 213. Windbg - swapgs 명령어와 (Ring 0 커널 모드의) FS, GS Segment 레지스터
13852정성태12/25/20245900디버깅 기술: 212. Windbg - (Ring 3 사용자 모드의) FS, GS Segment 레지스터파일 다운로드1
13851정성태12/23/20245097디버깅 기술: 211. Windbg - 커널 모드 디버깅 상태에서 사용자 프로그램을 디버깅하는 방법
13850정성태12/23/20246221오류 유형: 940. "Application Information" 서비스를 중지한 경우, "This file does not have an app associated with it for performing this action."
13849정성태12/20/20246190디버깅 기술: 210. Windbg - 논리(가상) 주소를 Segmentation을 거쳐 선형 주소로 변경
13848정성태12/18/20245686디버깅 기술: 209. Windbg로 알아보는 Prototype PTE파일 다운로드2
13847정성태12/18/20245758오류 유형: 939. golang - 빌드 시 "unknown directive: toolchain" 오류 빌드 시 이런 오류가 발생한다면?
13846정성태12/17/20246316디버깅 기술: 208. Windbg로 알아보는 Trans/Soft PTE와 2가지 Page Fault 유형파일 다운로드1
13845정성태12/16/20245163디버깅 기술: 207. Windbg로 알아보는 PTE (_MMPTE)
13844정성태12/14/20246676디버깅 기술: 206. Windbg로 알아보는 PFN (_MMPFN)파일 다운로드1
13843정성태12/13/20245192오류 유형: 938. Docker container 내에서 빌드 시 error MSB3021: Unable to copy file "..." to "...". Access to the path '...' is denied.
13842정성태12/12/20245380디버깅 기술: 205. Windbg - KPCR, KPRCB
13841정성태12/11/20246017오류 유형: 937. error MSB4044: The "ValidateValidArchitecture" task was not given a value for the required parameter "RemoteTarget"
13840정성태12/11/20245266오류 유형: 936. msbuild - Your project file doesn't list 'win' as a "RuntimeIdentifier"
13839정성태12/11/20246232오류 유형: 936. msbuild - error CS1617: Invalid option '12.0' for /langversion. Use '/langversion:?' to list supported values.
13838정성태12/4/20245955오류 유형: 935. Windbg - Breakpoint 0's offset expression evaluation failed.
13837정성태12/3/20246746디버깅 기술: 204. Windbg - 윈도우 핸들 테이블 (3) - Windows 10 이상인 경우
13836정성태12/3/20245295디버깅 기술: 203. Windbg - x64 가상 주소를 물리 주소로 변환 (페이지 크기가 2MB인 경우)
13835정성태12/2/20246728오류 유형: 934. Azure - rm: cannot remove '...': Directory not empty
13834정성태11/29/20246704Windows: 275. C# - CUI 애플리케이션과 Console 윈도우 (Windows 10 미만의 Classic Console 모드인 경우) [1]파일 다운로드1
13833정성태11/29/20246078개발 환경 구성: 737. Azure Web App에서 Scale-out으로 늘어난 리눅스 인스턴스에 SSH 접속하는 방법
13832정성태11/27/20245717Windows: 274. Windows 7부터 도입한 conhost.exe
13831정성태11/27/20245067Linux: 111. eBPF - BPF_MAP_TYPE_PERF_EVENT_ARRAY, BPF_MAP_TYPE_RINGBUF에 대한 다양한 용어들
13830정성태11/25/20246569개발 환경 구성: 736. 파이썬 웹 앱을 Azure App Service에 배포하기
13829정성태11/25/20246693스크립트: 67. 파이썬 - Windows 버전에서 함께 설치되는 py.exe
1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...