Is er een manier om nuget.exe automatisch bij te werken in de .nuget-map bij gebruik van pakketherstel?

Mijn team gebruikt de optie Pakketherstel inschakelen sinds Nuget 1.5 om pakketten buiten onze broncontrole te houden. Toen Nuget 1.6 werd uitgebracht, merkten we een probleem op waarbij het de pakketten niet naar beneden trok, en volgden het naar de Nuget.exe in de .nuget-map die moest worden bijgewerkt naar 1.6 om overeen te komen met de pakketbeheerder.

Wat is de beste manier om een ​​oplossing bij te werken nadat Nuget is bijgewerkt? Ik zie geen gemakkelijke manier om vanuit studio te vertellen welke versie van nuget zich in de oplossingsmap bevindt. Tot nu toe blazen we de .nuget-map weg en voeren we de opdracht Pakketherstel inschakelen opnieuw uit.


Antwoord 1, autoriteit 100%

Ik raad aan om .nuget\nuget.exe bij te werken met deze opdracht vanaf de opdrachtregel:

nuget.exe update -self

[EDIT]: Sluit eerst de VS-oplossing. Als er een update is en de oplossing wordt geopend, wordt nuget.exe uit de oplossing verwijderd.

U zouautomatisch nuget.exe kunnen bijwerken bij herstel door de .nuget\nuget.targets aan te passen om de bovenstaande opdracht toe te voegen. Ik zou het herstelcommando daarin als voorbeeld bekijken. Maar ik weet niet zeker of het de moeite waard is, nuget.exe-updates zijn niet zo gebruikelijk, en achterwaartse compatibiliteit zou zeer zelden moeten breken.


Antwoord 2, autoriteit 21%

Ik heb ontdekt dat de beste manier om hiermee om te gaan is door simpelweg de .nuget-map te verwijderen en het herstel van het pakket voor de hele oplossing opnieuw in te schakelen. Zoals hierboven vermeld, zou je een zelfupdate-opdracht aan je build kunnen toevoegen, maar dat zal de doelen of configuratiebestanden niet bijwerken als er wijzigingen zijn tussen versies (of de referentie uit je oplossing verwijderen). Misschien is het niet zo’n groot probleem, maar dit is de veilige manier om ervoor te zorgen dat je de nieuwste exe- en configuratiebestanden hebt. En aan het eind van de dag is updaten alleen een probleem als je toegang nodig hebt tot een nieuwe opdracht of als er uiteindelijk een belangrijke wijziging is in een nieuwe release.


Antwoord 3

Zie de post van David Ebbo op zijn blog

Het enige dat u hoeft te doen, is een NuGet.Config-bestand maken naast uw .sln-bestand, met daarin:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear/>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" />
  </packageSources>
</configuration>

Other episodes