Visual Studio가 모든 솔루션 대신 솔루션별로 NuGet 패키지 소스 구성을 적용하도록 만드는 방법을 아는 사람이 있습니까? 각각 고유 한 개인 NuGet 리포지토리가있는 여러 프로젝트에서 작업하기 때문에 버전 관리 문제가 계속 발생합니다. 어떤 NuGet 리포지토리가 어떤 프로젝트에 속하는지 계속 기억하고 돌아가서 올바른 프로젝트를 올바른 프로젝트에 적용하는 것은 ***의 고통입니다.
Visual Studio가 모든 솔루션 대신 솔루션별로 NuGet 패키지 소스 구성을 적용하도록 만드는 방법을 아는 사람이 있습니까? 각각 고유 한 개인 NuGet 리포지토리가있는 여러 프로젝트에서 작업하기 때문에 버전 관리 문제가 계속 발생합니다. 어떤 NuGet 리포지토리가 어떤 프로젝트에 속하는지 계속 기억하고 돌아가서 올바른 프로젝트를 올바른 프로젝트에 적용하는 것은 ***의 고통입니다.
답변:
TLDR : 예
NuGet은 Windows 사용자 프로필 수준에서 NuGet.config로 시작하는 패키지 원본의 계층 적 응용 프로그램을 사용하고 솔루션이 포함 된 파일 경로의 루트에서 시작하여 마지막으로 솔루션 파일.
그래서 제가 알아 낸 것은 다음과 같습니다. 도움이되는 Twitterer가 저에게이 문서를 알려준 덕분입니다.
https://docs.nuget.org/consume/nuget-config-file
Visual Studio의 Tools > NuGet Package Manager > Package Manager Settings: Package Sources옵션 에서 NuGet 패키지 소스를 편집하면 해당 변경 사항이 기본적으로 %APPDATA%\NuGet디렉터리 에있는 NuGet.config 파일에 적용됩니다 . 솔루션 별 (또는 솔루션 그룹별로) 이러한 설정을 재정의하려면 솔루션 또는 솔루션 경로를 따라 전략적으로 배치 된 NuGet.config 파일을 추가해야합니다.
NuGet 문서를 읽으면 모든 것이 명확 해집니다. 아래에서 제공하는 솔루션을 사용하면 단일 Visual Studio 솔루션에 대한 구성을 빠르게 지정할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
<packageSources>
<!-- Ditch all the Global NuGet package sources we only want a
single private NuGet repo for this project -->
<clear />
<!-- Add the private NuGet package source for this solution -->
<add key="My Private NuGet Server" value="http://myprivatenuget.com:8080/nuget" />
</packageSources>
<disabledPackageSources>
<!-- Add any package sources to ignore here using the same keys as
defined in the packageSources list above-->
<!--<add key="nuget.org" value="true" />-->
<add key="Microsoft and .NET" value="true" />
</disabledPackageSources>
</configuration>
당신은 구성이 보장, 여러 솔루션에 적용되는 솔루션 폴더가 모두 공통의 디렉토리에 포함되어 있는지 확인하고 공통의 디렉토리에 그 솔루션에 대한 관련 패키지 소스의 NuGet.config을 넣어하려는 경우 해당 프로젝트를위한 모든 솔루션 폴더 때로 믿을 수 't은 이 패키지 소스가이 공통 폴더에 포함되지 않은 사용할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="MyCompanyPackageSource" value="\\server\NuGet\MyCompany" /> </packageSources> </configuration>
BenAlabaster가 제공 하는 훌륭한 답변 에 추가 하고 싶습니다 . 나는 다소 반대 문제가 있었다.
이 회사는 기본적으로 모든 솔루션에서 사용할 수 있도록 사용자 지정 비공개 너겟 피드를 전 세계적으로 구성했으며 공개 너겟 피드를 사용하여 "프로토 타입"앱을 만들고 싶었 습니다 .
이를 통해 (해당 솔루션의 디렉터리에서) 공개 너겟 피드는 내 특정 솔루션에서만 사용할 수 있으며 회사의 피드는 다른 모든 솔루션의 기본값으로 유지합니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!-- Ditch all eventually upwards configured (private) feeds from an (enterprise) environment -->
<clear />
<!-- Make sure we use the public nuget -->
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
<disabledPackageSources>
<!-- Ditch all eventually upwards configured (private) feeds from an (enterprise) environment -->
<clear />
</disabledPackageSources>
</configuration>
핵심은 % APPDATA % \ NuGet의 NuGet.config에서 공개 피드를 의도적으로 비활성화했기 때문에 위쪽으로 비활성화 된 모든 피드를 지우는 것이 었습니다.