방법: NuGet 로컬 피드

발행: (2026년 1월 11일 오전 06:49 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

위에 제공된 소스 링크 외에 번역할 텍스트가 포함되어 있지 않습니다. 번역을 원하는 본문 내용을 알려주시면 한국어로 번역해 드리겠습니다.

Introduction

NuGet packages 은 .NET 개발자가 코어 라이브러리, 서드‑파티 도구, 내부 회사 구성 요소 등 재사용 가능한 코드를 공유, 버전 관리, 그리고 소비 하는 표준 방법입니다. NuGet 패키지는 기본적으로 컴파일된 어셈블리, 메타데이터, 종속성 정보를 포함하는 압축 번들이며, 이를 통해 Visual Studio와 .NET CLI가 프로젝트에 필요한 올바른 버전을 자동으로 복원할 수 있습니다.

이 시스템은 수년간 사용되어 왔으며, 일관성을 강제함으로써 효과를 발휘합니다: 이제 DLL을 직접 복사할 필요가 없고, 대신 의존성을 선언하면 NuGet이 업데이트, 충돌 및 빌드를 예측 가능하고 반복 가능한 방식으로 관리해 줍니다.

이 문서에서는 로컬 소스에 게시하는 코드를 작성하는 방법을 배웁니다.

NuGet.org의 개별 계정

패키지를 게시하고 관리하려면 개별 계정을 만들어야 합니다.

로컬 피드 / 소스

NuGet 로컬 피드는 단순히 머신이나 네트워크에 있는 폴더로, NuGet이 이를 패키지 소스로 인식하여 원격 저장소(예: nuget.org)에 게시하지 않고도 NuGet 패키지를 만들고, 저장하고, 사용할 수 있게 합니다.

로컬 피드는 빠르고 오프라인 친화적이며 사내 혹은 실험용 패키지에 이상적이지만, 정식 패키지 서버에서 제공되는 거버넌스, 버전 관리 규율, 감사 가능성은 부족합니다.

로컬 패키지를 생성해야 할 때

  • 개발자가 동일한 코드를 반복해서 사용한다.
  • 해당 코드는 개발자 또는 조직에 독점적이다.
  • 유지보수가 쉽고 여러 버전을 동시에 제공할 수 있다.

시작 예제 1

개발자 또는 팀은 Dapper가 DateOnlyTimeOnly 구조체를 이해하도록 타입 핸들러를 만들어야 합니다. 이는 로컬 패키지이거나 공개 패키지가 될 수 있습니다(공개 버전은 여기에서 확인하세요).

public class SqlDateOnlyTypeHandler : SqlMapper.TypeHandler
{
    public override void SetValue(IDbDataParameter parameter, DateOnly date)
        => parameter.Value = date.ToDateTime(new TimeOnly(0, 0));

    public override DateOnly Parse(object value) => DateOnly.FromDateTime((DateTime)value);
}

public class SqlTimeOnlyTypeHandler : SqlMapper.TypeHandler
{
    public override void SetValue(IDbDataParameter parameter, TimeOnly time)
    {
        parameter.Value = time.ToString();
    }

    public override TimeOnly Parse(object value) => TimeOnly.FromTimeSpan((TimeSpan)value);
}

Starter example 2

개발자 또는 팀이 내부에서만 사용되는 독점 API를 개발합니다. 이러한 패키지는 보호되어야 합니다; 그렇지 않으면 해커가 쉽게 소스 코드를 얻을 수 있습니다. 패키지 파일은 .dll 파일만큼 쉽게 해킹될 수 있습니다.

로컬 피드/소스에 게시하기 – 도구

이 도구의 목적은 패키지 파일을 개인용 또는 개발자 팀을 위한 로컬 피드 폴더에 복사하는 것입니다.

  • 소스 코드:

스크린샷

The tool

도구 사용

  1. package를 선택합니다.
  2. version을 선택합니다.
  3. Publish 버튼을 클릭합니다.
    • 확인 대화 상자가 나타납니다; 계속하려면 Yes를 클릭합니다.
    • 패키지가 이미 존재하면 덮어쓰게 됩니다.

구성

도구를 구성하려면 appsettings.json 파일을 엽니다.

PackageLocation

Microsoft Visual Studio용 로컬 NuGet 패키지가 저장된 폴더를 가리킵니다.

NuGet 패키지 소스에 대한 Visual Studio 옵션 대화 상자

NuGet 패키지 소스에 대한 Visual Studio 옵션 대화 상자

ProjectItems 섹션

.nupkg 파일이 하나 이상 포함된 프로젝트 폴더 경로를 하나 이상 추가합니다.

  • 경로는 프로젝트 폴더를 가리키며, .nupkg 파일 자체를 직접 가리키지는 않습니다.
  • 경로는 하나 이상의 Visual Studio 솔루션에 속할 수 있습니다.

예시 appsettings.json (다섯 경로)

{
  "PackageLocation": "C:\\NuGetLocal",
  "ProjectItems": [
    { "Path": "C:\\DotnetLand\\VS2022\\ProjectTemplates2025\\SpectreConsoleLibrary" },
    { "Path": "C:\\DotnetLand\\VS2022\\BogusTrainingSolution\\BogusLibrary" },
    { "Path": "C:\\DotnetLand\\VS2022\\SerilogSolution\\SeriLogThemesLibrary" },
    { "Path": "C:\\DotnetLand\\VS2022\\ConsoleHelpersSolution\\ConsoleConfigurationLibrary" },
    { "Path": "c:\\DotnetLand\\VS2019\\dapper-libraries\\Dapper.Handlers" }
  ]
}

중요

💡 DirectoryHelper.ProjectItems 메서드는 appsettings.jsonProjectItems에 지정된 폴더를 순회합니다. 존재하고 .nupkg 파일을 포함하는 경로만 처리됩니다.

도구에 최소 하나의 .nupkg가 표시됩니다.

Summary

이 문서에서는 로컬 NuGet 패키지를 사용하는 방법과 개발자 또는 개발팀이 로컬 NuGet 패키지를 사용하고자 하는 이유, 그리고 패키지를 로컬 피드 폴더로 복사하는 도구에 대해 설명합니다. 로컬 NuGet 패키지를 작업하는 데 도움이 됩니다.

Back to Blog

관련 글

더 보기 »

C#로 PowerPoint (PPT/PPTX)를 PDF로 변환

Spire.Presentation을 사용한 C에서 PowerPoint PPT/PPTX를 PDF로 변환하기 일상적인 개발 및 사무 작업에서 PowerPoint 파일을 PDF로 변환하는 것은 높은 우선순위입니다.

C#에서 RTF를 PDF로 변환하기

개요 RTF(Rich Text Format)는 문서 편집 및 데이터 교환에 널리 사용되는 크로스‑플랫폼 형식입니다. 반면 PDF는 문서 배포에 이상적입니다.

NuGet에서 WebForms Core

개요 WebForms Core는 Elanat에서 개발한 서버‑기반 UI 기술로, 이제 공식적으로 NuGet에서 패키지 이름 WFC로 제공됩니다. 이 패키지는…