So installieren Sie Visual Studio Code-Erweiterungen über die Befehlszeile

69

So installieren Sie Visual Studio-Codeerweiterungen über die Eingabeaufforderung, während die Codeinstanz geöffnet ist. Ich möchte die Erweiterung aus der Visual Studio Code-Galerie installieren.

Im Folgenden sind die Erweiterungsdaten aufgeführt, die ich installieren möchte.

Geben Sie hier die Bildbeschreibung ein

Meine Visual Studio-Codeinstanz ist geöffnet. Was ich tun möchte, ist die folgende Erweiterung von der Eingabeaufforderung zu installieren.

Shan Khan
quelle
Können Sie nicht einfach die Befehlspalette von Visual Studio Code öffnen und ext install eingeben und die Erweiterung von John Papa aus der Erweiterungsliste auswählen? Es scheint dort jetzt verfügbar zu sein. Warum möchten Sie dies an einer Eingabeaufforderung tun?
Darren Evans
3
Es ist wahrscheinlich nicht nur zum Spaß manuell von der Kommandozeile aus zu tun, sondern den Befehl in ein größeres Skript zu integrieren, das zum Beispiel sein gesamtes System mit jeder seiner Einstellungen vollautomatisch einrichtet. Wenn Sie dazu VS-Code öffnen und manuell klicken müssen, wird der "vollautomatische" Teil
Nicolas Marshall

Antworten:

104

Um die Automatisierung und Konfiguration von VS-Code zu vereinfachen, können Erweiterungen über die Befehlszeile aufgelistet, installiert und deinstalliert werden. Geben Sie bei der Identifizierung einer Erweiterung den vollständigen Namen des Formulars publisher.extension an, z. B. donjayamanne.python.

code --list-extensions
code --install-extension ms-vscode.cpptools
code --uninstall-extension ms-vscode.csharp

Dokumentation

Shan Khan
quelle
4
So traurig, dass sie nicht hatten --update-extension. Kann nicht mit der Befehlszeile aktualisiert werden.
Illuminator
2
code --list-extensions und andere Befehle funktionieren nicht. Diese Befehle öffnen nur das vscode-Fenster, ohne das zu tun, was beabsichtigt ist. Übrigens verwende ich vscode win32-x64-1.21.1 auf wn7 x64
hugemeow
7
Das Aktualisieren einer Erweiterung ist jetzt mit der --forceOption mit möglich --install-extension. (Siehe GitHub Ausgabe # 58434 , Commit 1dd7326 .)
Peterino
12

Entsprechend der Dokumentation können Sie dafür verwenden --install-extension. Zum Beispiel:

code --install-extension ms-vscode.csharp
svick
quelle
2
Dies funktioniert in den letzten Builds nicht. 2 Fehler sind jetzt zu sehen: Ignoring option install-extension: not supported for code.undAt least one file or folder must be provided.
Avindra Goolcharan
12

Um Shan Khans obige Antwort zu ergänzen, müssen Sie das callSchlüsselwort verwenden , wenn Sie Erweiterungen in einer .bat-Datei installieren möchten. Andernfalls wird Ihr Skript nach Abschluss der Erweiterungsinstallation beendet. Wenn sich code.exe noch nicht im Pfad befindet und Sie über einen vollständigen Pfad aufrufen, stellen Sie sicher, dass Sie auf das /binVerzeichnis zeigen:

echo.
echo.
echo Installing VS Code Extensions...
call "C:\Program Files\Microsoft VS Code\bin\code" --install-extension ritwickdey.liveserver
call "C:\Program Files\Microsoft VS Code\bin\code" --install-extension ritwickdey.live-sass
call "C:\Program Files\Microsoft VS Code\bin\code" --install-extension ms-vscode.csharp
call "C:\Program Files\Microsoft VS Code\bin\code" --install-extension PKief.material-icon-theme
echo Done.
echo.
echo.
Aaron Tyler
quelle
2
Wenn Sie die Installation von vscode-Erweiterungen in einem Skript (Batch, Ansible, Bash usw.) automatisieren, würde ich das Hinzufügen des --forceFlags empfehlen , da Sie --install-extensionaufgefordert werden, die Erweiterung zu aktualisieren, wenn bereits eine alte Version installiert ist. Und in einem automatisierten Skript ist eine Person nicht immer da, um die Aufforderung zu beantworten. Wenn es nicht wünschenswert ist, immer die neueste Version einer Erweiterung zu installieren, müssen Sie verwenden --list-extensionsund --show-versionsund programmatisch entscheiden , ob zu aktualisieren oder nicht.
Kallmanation
5

Ich glaube, Sie möchten eine Erweiterung als .vsix-Datei installieren. Dokumentation hier. Als Referenz kopiert.

Sie können eine VS-Code-Erweiterung, die in einer .vsix-Datei enthalten ist, manuell installieren. Installieren Sie einfach über die VS Code-Befehlszeile, die den Pfad zur .vsix-Datei angibt.

code --install-extension myExtensionFolder\myExtension.vsix

Die Erweiterung wird unter dem Ordner .vscode / extensions Ihres Benutzers installiert. Sie können mehrere .vsix-Dateien in der Befehlszeile bereitstellen, um mehrere Erweiterungen gleichzeitig zu installieren.

Wade Anderson
quelle
Das von Ihnen bereitgestellte Senerio muss eine vsix-Datei enthalten. Ich möchte nur eine ID oder einen Link oder Namen angeben, um vsix oder die Erweiterung direkt vom Marktplatz herunterzuladen und im Code zu installieren. ?
Shan Khan
Hmm .. Ich sehe nichts in den Dokumenten, wie das geht. Sie können die Befehlspalette wie hier beschrieben verwenden . Ist es das, wonach du suchst? Wenn ja, werde ich meine Antwort aktualisieren.
Wade Anderson
4
Für den Fall, dass jemand anderes auf diese Antwort stößt. Sie müssen den Parameter '--install-extension' verwenden, um das vsix zu installieren. code.visualstudio.com/docs/editor/…
Sorskoot
0

Suchen Sie zunächst den vollständig qualifizierten Nebenstellennamen. Dazu können Sie mit der rechten Maustaste auf eine bestimmte Erweiterung klicken und "Erweiterungs-ID kopieren" auswählen (im Erweiterungsbereich).

Da die anderen Antworten bereits die .BAT / .CMD-Syntax veranschaulichen, finden Sie hier ein Beispiel für die Installation von Erweiterungen mithilfe eines Powershell-Skripts (das natürlich über CMD ausgeführt werden kann).

# A system-wide install of VSCode might be in: "C:\Program Files\Microsoft VS Code\bin\code"
param(
    [string] $pathToVsCodeExe = ($Env:USERPROFILE + '\AppData\Local\Programs\Microsoft VS Code'),
    [string[]] $extensions = @("editorconfig.editorconfig", "dbaeumer.vscode-eslint")
)


try {
    $originalLocation = Get-Location
    Set-Location $pathToVsCodeExe
    $extensions | ForEach-Object {
        Invoke-Expression -Command "Code --install-extension $_ --force"
    }    
}
catch {
    $_
}
finally {
    Set-Location $originalLocation    
}
derekbaker783
quelle