Czy ktoś wie, w jaki sposób Visual Studio może zastosować konfigurację źródeł pakietów NuGet dla każdego rozwiązania zamiast wszystkich rozwiązań? Wciąż mam problemy z wersjami, ponieważ pracuję nad wieloma projektami, z których każdy ma swoje własne prywatne repozytoria NuGet. To brzemię w ***, aby pamiętać o tym, które repoo NuGet należy do którego projektu i powrócić i zastosować poprawny do właściwego projektu.Czy istnieje sposób na zrobienie ustawień źródła pakietów NuGet na rozwiązanie?
Odpowiedz
TLDR: Tak
Nuget wykorzystuje hierarchiczną stosowanie źródeł pakietów począwszy od NuGet.config na poziomie profilu użytkownika systemu Windows, a następnie stosują coraz bardziej szczegółową konfigurację zaczynając od nasady ścieżką pliku, który zawiera twoje rozwiązanie, ostatecznie kończące się katalogiem zawierającym twój plik rozwiązania.
Więc oto co udało mi się dowiedzieć - dzięki uprzejmości pomocny Twitterer wskazując mnie do tego dokumentu:
https://docs.nuget.org/consume/nuget-config-file
Podczas edycji źródła pakietów Nuget w Tools > NuGet Package Manager > Package Manager Settings: Package Sources
opcji Visual Studio, to dotyczy domyślnie zmienia się na plik NuGet.config znaleziony w katalogu %APPDATA%\NuGet
. Aby zastąpić te ustawienia w zależności od rozwiązania (lub grupy rozwiązań), należy dodać strategicznie umieszczony plik NuGet.config gdzieś na ścieżce rozwiązania lub rozwiązań.
Wszystko stanie się jasne, jeśli czytasz ten dokument Nuget, rozwiązanie I dostarczyć poniżej szybko pozwalają określić konfigurację dla pojedynczej Wizualnej rozwiązania Studio:
- Przejdź do% appdata% \ Nuget i grab kopię pliku NuGet.config
- Zrzuć kopię w katalogu głównym rozwiązania - np. miejsce, w którym znajduje się Application.sln.
- Zastąp ustawienia domyślne zastosowane do profilu użytkownika, edytując kopię, tak aby zawierał tylko źródła pakietów NuGet, które są istotne dla tego rozwiązania - na przykład prywatne źródło NuGet, które zawiera zastrzeżone pakiety dla tego rozwiązania, ale nie powinno być stosowane do innych projektów - na przykład:
<?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>
Jeśli chcesz konfiguracja zastosować do wielu rozwiązań, zapewniają rozwiązanie foldery są wszystkie zawarte w ramach wspólnego katalogu i umieścić NuGet.config dla źródeł pakietów istotnych dla rozwiązania w tym wspólnym katalogu, zapewniając, że wszelkie foldery rozwiązań dla projektów, które są , nie są do korzystania z tych źródeł pakietów nie są zawarte w tym wspólnym folderze.
Dzięki BenAlabaster. Jeśli chcesz zachować prostotę, możesz po prostu mieć plik zawierający: ' Xml version =" 1.0 "encoding =" utf-8 "?>
Może być konieczne zamknięcie i ponowne otwarcie programu Visual Studio, aby zmiany zostały uwzględnione. Próbowałem zamknąć moje rozwiązanie, a to nie wystarczyło. – Jess
Dzięki, oba dobre punkty – BenAlabaster
Chcę dodać do doskonałej odpowiedzi udzielonej przez BenAlabaster. Miałem nieco przeciwny problem:
Firma globalnie skonfigurowała swój niestandardowy kanał prywatny nuget do użytku we wszystkich rozwiązaniach domyślnie i chciałem stworzyć aplikację "prototypową", korzystając z public nuget feed.
Z tym (w katalogu tego rozwiązania), pasza Nuget publiczny jest dostępny tylko do mojego konkretnego rozwiązania, zachowując paszy firmy domyślny dla wszystkich innych rozwiązań:
<?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>
Kluczem było wyczyszczenie wszystkich wyłączonych kanałów w górę, ponieważ celowo wyłączyli oni publiczny kanał w swoim pliku NuGet.config w% APPDATA% \ NuGet.
- 1. Czy istnieje sposób na zrobienie kółka z-index?
- 2. Object.isArray() jest powolny, czy istnieje szybki sposób na zrobienie tego?
- 3. Czy istnieje sposób na odinstalowanie wielu pakietów za pomocą pip?
- 4. Alternatywny sposób na zrobienie pierwszego dużego repozytu
- 5. Czy istnieje sposób na rozwiązanie synonimów typu w haskell?
- 6. Czy istnieje sposób na rozwiązanie wielu obietnic za pomocą kątomierza?
- 7. iOS: Czy istnieje sposób na sfałszowanie ustawień regionalnych użytkownika?
- 8. Najlepszy sposób na zrobienie tego rodzaju cienia?
- 9. Czy istnieje łatwy sposób na dołączenie źródła w środowisku Eclipse?
- 10. Przywracanie pakietów NuGet nie działa
- 11. NuGet nie pokazuje żadnych pakietów
- 12. Visual Studio + nuget + TFS: sprawdzanie pakietów nuget?
- 13. Publikowanie pakietów NuGet - TeamCity
- 14. Jaki jest sens pakietów Nuget?
- 15. Czy istnieje sposób na wykonanie zadania jednorazowego?
- 16. Czy istnieje sposób na zlokalizowanie aplikacji na różnych platformach?
- 17. Czy istnieje sposób na zrobienie czegoś w rodzaju serwera szyn --sandbox?
- 18. gdzie tabela. * <> Tabela. * - Czy istnieje sposób na zrobienie czegoś takiego?
- 19. VS2015 menedżer pakietów nuget nie znajduje pakietów
- 20. Nuget Przywróćmy Pakiet kładzie nacisk na konkretne wersje pakietów
- 21. Czy istnieje sposób przekonwertować RedisValue [] na ciąg []?
- 22. Najszybszy sposób na zrobienie sumy wektorowej z instrukcjami AVX
- 23. Odzwierciedlając oficjalne repozytorium pakietów nuget
- 24. Czy istnieje sposób na importowanie/eksportowanie skarbca SourceGear do Git
- 25. Najszybszy sposób na zrobienie 21-dniowej sumy kroczącej dla ActivityType
- 26. Czy istnieje sposób na rozwiązanie pseudo-błędów w czasie projektowania lub czy IDE je ignoruje?
- 27. Czy istnieje sposób na utrzymanie danych HSQLDB?
- 28. Nieodłączny sposób na zapisanie źródła strony internetowej
- 29. Nuget nie uzyskanie brakujących pakietów
- 30. Jak wyświetlić listę wszystkich pakietów w Nuget
Nie jesteś pewien co masz na myśli. Możesz konfigurować źródła pakietów nuget dla wszystkich rozwiązań. Plik package.config będzie zawierał wersje repozytoriów nuget, których potrzebuje Twój projekt. Nie aktualizuj automatycznie. czy możesz podać przykład tego, co chcesz zrobić. –
@Shyamal Mówiłem o źródłach pakietów NuGet, a nie o samych pakietach ... Wymyśliłem, jak to zrobić. – BenAlabaster