NuGet 패키지를 사용할 때 서로 다른 리소스를 통해 패키지를 설치해야 할 경우가 있습니다.
특히, 내부 저장소를 활용하면서 배포처가 다를 때 패키지 소스 충돌로 인한 오류가 발생할 수 있습니다.
packageSourceMapping을 활용해 이러한 문제를 해결하는 방법을 소개합니다.
내부 저장소를 사용 중이며, 서로 다른 배포처에서 패키지를 설치해야 하는 상황입니다.
testa 패키지: A 리소스(http://a.com/index.json)
testb 패키지: B 리소스(https://b.com/packages/)
일반적으로 NuGet 설정은 아래와 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="A" value="http://a.com/index.json" allowInsecureConnections="true"/>
<add key="B" value="https://b.com/packages/" />
</packageSources>
</configuration>
testa package : A / testb package : B
위 처럼 하게되면 CI 시 A package 가 설치될때 B 패키지 리소스에서 찾게되어 에러가 발생됩니다.
이럴때는 packageSourceMapping 을 이용해 패키지 리소스와 패키지를 매핑시켜줍니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="A" value="http://a.com/index.json" allowInsecureConnections="true"/>
<add key="B" value="https://b.com/packages/" />
</packageSources>
<packageSourceMapping>
<packageSource key="A">
<package pattern="*" />
</packageSource>
<packageSource key="B">
<package pattern="testb" />
<package pattern="testb.*" />
</packageSource>
</packageSourceMapping>
</configuration>
위처럼 설정하게되면 testb 패키지와 testb. 으로 시작하는 패키지 들은 모두 B 패키지 리소스에서 다운받고
그외의 패키지 같은 경우 A 패키지 리소스에서 찾게됩니다.
서로 다른 배포처에서 패키지를 설치할 때 packageSourceMapping을 사용하면 패키지와 리소스를 명확하게 매핑할 수 있습니다. 이를 통해 패키지 설치 시 리소스 충돌로 인한 오류를 방지할 수 있습니다.
* 보안상 HTTP 리소스를 사용할 경우 allowInsecureConnections="true" 설정을 추가해야 합니다.
CSnakes.Runtime 을 로컬 파이썬/VM 이용하기 (0) | 2025.01.25 |
---|---|
CSnakes.Runtime 사용하기 (0) | 2025.01.22 |
LM-Kit.NET 활용하기 (0) | 2024.10.27 |
C# 키보드 후킹하기 (0) | 2024.10.21 |
C# RabbitMQ Management 실행하기 (0) | 2024.10.14 |