본문 바로가기
카테고리 없음

Nuget Package 리소스가 다를 때 처리 방법

by keisoft 2025. 1. 16.

nuget.config에서 패키지별로 특정 소스를 지정하는 방법을 알려드리겠습니다. `packageSourceMapping` 기능을 사용하면 특정 패키지를 특정 소스에서만 찾도록 설정할 수 있습니다.

```xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <!-- 두 개의 다른 NuGet 소스 추가 -->
    <add key="AA-source" value="AA-nuget-url" />
    <add key="BB-source" value="BB-nuget-url" />
  </packageSources>

  <!-- 패키지별 소스 매핑 설정 -->
  <packageSourceMapping>
    <!-- 활성화 필수 -->
    <packageSource key="AA-source">
      <!-- A 패키지는 AA 소스에서만 찾도록 설정 -->
      <package pattern="A*" />
      <!-- 추가 패키지가 있다면 여기에 추가 -->
    </packageSource>
    
    <packageSource key="BB-source">
      <!-- B 패키지는 BB 소스에서만 찾도록 설정 -->
      <package pattern="B*" />
      <!-- 추가 패키지가 있다면 여기에 추가 -->
    </packageSource>
  </packageSourceMapping>
</configuration>
```

실제 예시:
```xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="private-nuget" value="https://private-nuget.example.com/v3/index.json" />
    <add key="company-nuget" value="https://company-nuget.example.com/v3/index.json" />
  </packageSources>

  <packageSourceMapping>
    <packageSource key="private-nuget">
      <package pattern="Company.Internal.*" />
      <package pattern="PrivatePackage.*" />
    </packageSource>
    
    <packageSource key="company-nuget">
      <package pattern="Company.Public.*" />
      <package pattern="PublicPackage.*" />
    </packageSource>
  </packageSourceMapping>
</configuration>
```

패턴 매칭 규칙:
- `pattern="ExactPackageName"` - 정확한 패키지 이름 매칭
- `pattern="Package.*"` - 와일드카드를 사용한 매칭
- `pattern="Company.*"` - 특정 접두사로 시작하는 모든 패키지 매칭

이렇게 설정하면 각 패키지가 지정된 소스에서만 검색되어, 잘못된 소스에서 패키지를 찾으려고 시도하는 문제를 해결할 수 있습니다.