Redigera

Dela via


Vanliga frågor och svar om NuGet

Vanliga frågor och svar om NuGet.org, till exempel NuGet.org kontofrågor, finns i NuGet.org vanliga frågor och svar.

Allmänt

Vad krävs för att köra NuGet?

All information om både användargränssnittet och kommandoradsverktygen finns i Installationsguide.

Stöder NuGet Mono?

Kommandoradsverktyget nuget.exe, bygger och körs vanligtvis under Windows. NuGet kan köras på Unix-operativsystem med mono, men stöds inte officiellt av NuGets supportprincip.

Mono har överfört ägarskapet till Wine och underhålls inte längre av Microsoft.

Hur kan jag avgöra vad ett paket innehåller och om det är stabilt och användbart för mitt program?

Den primära källan för att lära sig om ett paket är dess listsida på nuget.org (eller ett annat privat flöde). Varje paketsida på nuget.org innehåller en beskrivning av paketet, dess versionshistorik och användningsstatistik. Avsnittet Info på paketsidan innehåller också en länk till projektets webbplats där du vanligtvis hittar många exempel och annan dokumentation som hjälper dig att lära dig hur paketet används.

Mer information finns i Hitta och välja paket.

NuGet i Visual Studio

Hur stöds NuGet i olika Visual Studio-produkter?

Hur kontrollerar jag den exakta versionen av De NuGet-verktyg som är installerade?

I Visual Studio använder du kommandot Hjälp > Om Microsoft Visual Studio och tittar på den version som visas bredvid NuGet Package Manager.

Du kan också starta Package Manager-konsolen (Tools > NuGet Package Manager > Package Manager Console) och ange $host för att se information om NuGet, inklusive versionen.

Vilka programmeringsspråk stöds av NuGet?

NuGet fungerar vanligtvis för .NET-språk och är utformat för att föra in .NET-bibliotek i ett projekt. Eftersom det även stöder MSBuild och Visual Studio-automatisering i vissa projekttyper, stöder det även andra projekt och språk i olika grad.

Den senaste versionen av NuGet stöder C#, Visual Basic, F#, WiX, C++och Q#.

Vilka projektmallar stöds av NuGet?

NuGet har fullt stöd för en mängd olika projektmallar som Windows, Web, Cloud, SharePoint, Wix och så vidare.

Hur uppdaterar jag paket som ingår i Visual Studio-mallar?

Gå till fliken Uppdateringar i package manager-användargränssnittet och välj Uppdatera allaeller använd kommandot Update-Package från Package Manager-konsolen.

Om du vill uppdatera själva mallen måste du uppdatera malllagringsplatsen manuellt. Se Xavier Decosters blogg om detta ämne. Observera att detta görs på egen risk eftersom manuella uppdateringar kan skada mallen om den senaste versionen av alla beroenden inte är kompatibel med varandra.

Kan jag använda NuGet utanför Visual Studio?

Ja, NuGet fungerar direkt från kommandoraden. Se Installationsguide och CLI-referensen.

NuGet-kommandorad

Hur hämtar jag den senaste versionen av NuGet-kommandoradsverktyget?

Se installationsguiden för . Om du vill kontrollera den aktuella installerade versionen av verktyget använder du nuget help.

Vad är licensen för nuget.exe?

Du får omdistribuera nuget.exe enligt villkoren i MIT-licensen. Du ansvarar för att uppdatera och underhålla kopior av nuget.exe som du väljer att omdistribuera.

Går det att utöka NuGet-kommandoradsverktyget?

Ja, det går att lägga till anpassade kommandon i nuget.exe, enligt beskrivningen i Rob Reynolds inlägg tillgängligt via Archive.org.

NuGet Package Manager-konsolen (Visual Studio i Windows)

Hur får jag åtkomst till DTE-objektet i Package Manager-konsolen?

Det översta objektet i Visual Studio Automation-objektmodellen kallas för objektet DTE (Development Tools Environment). Konsolen tillhandahåller detta via en variabel med namnet $DTE. Mer information finns i Översikt över Automation-modell i dokumentationen för Utökningsbarhet i Visual Studio.

Jag försöker omvandla variabeln $DTE till typen DTE2, men jag får ett fel: Det går inte att konvertera värdet "EnvDTE.DTEClass" av typen "EnvDTE.DTEClass" till typen "EnvDTE80.DTE2". Vad är fel?

Det här är ett känt problem med hur PowerShell interagerar med ett COM-objekt. Prova följande:

`$dte2 = Get-Interface $dte ([EnvDTE80.DTE2])`

Get-Interface är en hjälpfunktion som lagts till av NuGet PowerShell-värden.

Skapa och publicera paket

Hur listar jag mitt paket i en feed?

Jag har flera versioner av mitt bibliotek som är inriktade på olika versioner av .NET Framework. Hur skapar jag ett enda paket som stöder detta?

Hur konfigurerar jag min egen lagringsplats eller feed?

Se översikten över Hosting-paket.

Hur kan jag ladda upp paket till min NuGet-feed i bulk?

Se Masspublicering av NuGet-paket (jeffhandly.com).

Arbeta med paket

Går det att installera NuGet-paket utan Internetanslutning?

Ja, se Scott Hanselmans blogginlägg How to access NuGet when nuget.org is down (or you're on a plane) (hanselman.com).

Hur installerar jag paket på en annan plats än standardpaketmappen?

Ange inställningen repositoryPath i Nuget.Config med hjälp av nuget config -set repositoryPath=<path>.

Hur undviker jag att lägga till NuGet-paketmappen i källkontrollen?

Ange disableSourceControlIntegration i Nuget.Config till true. Den här nyckeln fungerar på lösningsnivå och måste därför läggas till i filen $(Solutiondir)\.nuget\Nuget.Config. När du aktiverar paketåterställning från Visual Studio skapas den här filen automatiskt.

Hur inaktiverar jag paketåterställning?

Varför får jag ett "Det går inte att lösa beroendefel" när jag installerar ett lokalt paket med fjärrberoenden?

Du måste välja källan Alla när du installerar ett lokalt paket i projektet. Detta aggregerar alla feeds i stället för att bara använda en. Anledningen till att det här felet visas är att användare av en lokal lagringsplats ofta vill undvika att oavsiktligt installera ett fjärrpaket på grund av företagsprinciper.

Jag har flera projekt i samma mapp, hur kan jag använda separata packages.config filer för varje projekt?

I de flesta projekt där separata projekt finns i separata mappar är detta inte ett problem eftersom NuGet identifierar de packages.config filerna i varje projekt. Med NuGet 3.3+ och flera projekt i samma mapp kan du infoga namnet på projektet i packages.config filnamn använder mönstret packages.{project-name}.configoch NuGet använder filen.

Detta är inte ett problem när du använder PackageReference, eftersom varje projektfil innehåller en egen lista över beroenden.

Jag ser inte nuget.org i min lista över lagringsplatser, hur får jag tillbaka den?

  • Lägg till https://api.nuget.org/v3/index.json i listan över källor, eller
  • Ta bort %appdata%\.nuget\NuGet.Config (Windows) eller ~/.nuget/NuGet/NuGet.Config (Mac/Linux) och låt NuGet återskapa det.

Jag migrerade till PackageReference, varför misslyckas mitt bygge med "Det här projektet refererar till NuGet-paket som saknas på den här datorn."?

I packages.config projekt, när ett paket med build rekvisita eller mål installerades, skulle NuGet lägga till ett EnsureNuGetPackageBuildImports mål för att verifiera att paketen msbuild innehåll har importerats innan du skapar. Om target har ändrats manuellt kanske NuGet inte kan identifiera att den behöver tas bort vid migrering.

Om projektet är PackageReference och du fortfarande har det här målet i projektfilen bör det vara säkert att ta bort det.

Det finns ingen README i Visual Studio NuGet Package Manager för det valda paketet.

Om du ser meddelandet "Det finns ingen README tillgänglig för den valda paketversionen" i Visual Studio NuGet Package Manager innebär det att den valda versionen av NuGet-paketet inte har någon inbäddad README-fil.

  • Om detta inte är den senaste versionen av paketet kan du kontrollera den senaste versionen.
  • Om den senaste versionen inte har README-filen inbäddad heller och du inte är underhållare av det här paketet kan du överväga att lämna in ett problem eller kontakta underhållaren för att begära en README.
  • Om du är underhållare för paketet, här är guiden om hur du bäddar in README i ditt paket. Observera att om du har lagt till README-filen på NuGet.org men inte har bäddat in den i paketet visas inte README i Visual Studio.