configuratie van de dotnetup-omgeving

Note

dotnetup is beschikbaar als openbare preview. De functies en het gedrag kunnen veranderen vóór algemene beschikbaarheid.

Dotnetup kan de omgeving configureren om de .NET SDK's en runtimes die het installeert beschikbaar te maken. Dit doet u door de volgende omgevingsvariabelen in te stellen:

  • PATH: maakt de dotnet opdracht beschikbaar op de opdrachtregel. Ontwikkelhulpprogramma's zoals Visual Studio of C# Dev Kit gebruiken ook de PATH om .NET SDK's en runtimes te vinden.
  • DOTNET_ROOT: Geeft uitvoerbare bestanden van frameworkafhankelijke toepassingen aan waar een .NET-installatie en de gedeelde runtimes te vinden zijn.

Dotnetup ondersteunt verschillende toegangsmodi die bepalen waar deze omgevingsvariabelen worden ingesteld. U kunt een toegangsmodus kiezen in de eerste dotnetup-installatie of later met de dotnetup env opdracht.

Toegangsmodus Gedrag
none Wijzigt deze omgevingsvariabelen niet. Voer .NET uit met dotnetup dotnet.
shell Hiermee wijzigt u het shell-profiel om deze omgevingsvariabelen in te stellen. Processen die vanuit die shell zijn gestart, gebruiken de .NET SDK's en runtimes die zijn geïnstalleerd door dotnetup.
everywhere Wijzigt het systeem PATH en stelt de omgevingsvariabele op gebruikersniveau DOTNET_ROOT in. Alleen beschikbaar op Windows.

Dotnetup voegt zichzelf standaard ook toe aan de PATH, ongeacht de instelling voor de toegangsmodus. Dit kan worden beheerd met dotnetup env set --dotnetup-on-path <true|false>.

Overwegingen voor Everywhere-modus

Overal is de standaardmodus op Windows, zodat SDK's en runtimes die door dotnetup zijn geïnstalleerd, beschikbaar zijn via ontwikkelhulpprogramma's en vanuit terminals die cmd als de shell gebruiken. Er zijn echter enkele dingen waar u rekening mee moet houden, met name over hoe dit samenwerkt met machinebrede installaties van de .NET SDK en Runtime.

Machinebrede installaties van .NET bevinden zich onder de map Program Files. Ze kunnen worden geïnstalleerd met installatieprogramma's die kunnen worden gedownload vanaf de pagina .NET downloads. Visual Studio installeert machinebrede installaties van de .NET SDK en Runtime, en installatieprogramma's voor frameworkafhankelijke toepassingen kunnen ook de .NET Runtime installeren waarvan ze afhankelijk zijn op de computerbrede locatie.

In de modus overal heeft de door de gebruiker lokaal geïnstalleerde, door dotnetup beheerde .NET-installatiehoofdmap voorrang op de systeemwijde .NET-installatiehoofdmap. Dit betekent dat .NET SDK's en runtimes die zijn geïnstalleerd in Program Files niet beschikbaar zijn. Projecten die afhankelijk zijn van deze SDK's, kunnen niet worden gecompileerd als er geen overeenkomende SDK is geïnstalleerd. Als een overeenkomende runtime niet is geïnstalleerd, kunnen frameworkafhankelijke toepassingen niet worden gestart met de foutmelding 'U moet .NET installeren of bijwerken om deze toepassing uit te voeren'.

Om deze fouten te voorkomen, biedt de eerste dotnetup-installatie de mogelijkheid om bestaande systeem-.NET SDK- en Runtime-installaties te migreren. U kunt ze ook expliciet migreren door dotnetup runtime install --migrate-from-system voor SDK's of dotnetup sdk install --migrate-from-system voor runtimes uit te voeren.

Voor het in- of uitschakelen van de modus overal moet u het system PATH wijzigen. Hiervoor zijn verhoogde rechten vereist (dat wil bijvoorbeeld zeggen dat goedkeuring van een UAC-prompt of 'Als administrator uitvoeren' nodig is). Dit komt doordat de installatieprogramma's voor de hele machine voor .NET de .NET-installatiemap in Program Files aan de system PATH toevoegen en de system PATH voorrang heeft op de user PATH bij het herkennen van opdrachten. Dotnetup moet dus het systeemPAD wijzigen om de dotnetup-.NET installatiehoofdmap voorrang te geven.

Omdat het systeem-PATH van toepassing is op alle gebruikers, kunnen deze wijzigingen van invloed zijn op andere gebruikers. Het pad dat wordt toegevoegd aan de systeem-PATH bevindt zich standaard in de lokale AppData-map van de gebruiker. Dit is normaal gesproken niet toegankelijk voor andere gebruikers, dus dit heeft geen invloed op welke versie van dotnet wordt bepaald. Verhoogde processen (d.w.w.v. uitvoeren als administrator) kunnen het pad echter lezen en kunnen onverwacht .NET SDK's of runtimes van een andere gebruiker vinden.

Ondersteunde shells

Ondersteuning voor het genereren van profielen en scripts:

  • Bash
  • Z shell
  • Vis
  • Pwsh (PowerShell Core)
  • PowerShell

Als u --shell niet doorgeeft, detecteert dotnetup de huidige shell. Gebruik een expliciete shell wanneer detectie niet beschikbaar is of wanneer u een ander profiel wilt bijwerken:

dotnetup env set shell --shell zsh

Opgeslagen en waargenomen status

dotnetup.config.json slaat de geselecteerde toegangsmodus op en of dotnetup op PATH moet staan. dotnetup env show vergelijkt die configuratie met het huidige profiel en de huidige omgeving. Het rapporteert drift als de waargenomen toestand niet overeenkomt.

De opgeslagen configuratie opnieuw toepassen om drift te corrigeren:

dotnetup env set

Huidige terminal

Wijzigingen in de profiel- en Windows-omgeving herschrijven de omgeving van het huidige proces niet. Open een nieuwe terminal, source het gewijzigde profiel of evalueer het gegenereerde script.

Voor Bash- of Z-shell:

eval "$(dotnetup env script)"

Voor PowerShell:

dotnetup env script --shell pwsh | Invoke-Expression

env script volgt de opgeslagen configuratie wanneer u geen selectieopties doorgeeft. Gebruik --dotnet, --dotnetupof beide om de gegenereerde inhoud te selecteren.

Omgevingsconfiguratie verwijderen

Verwijder alle verbindingen van de beheerde omgeving:

dotnetup env clear

Deze opdracht is gelijk aan:

dotnetup env set none --dotnetup-on-path false

Het verwijdert SDK's of runtimes niet.