Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku pokazano, jak opublikować rozszerzenie Visual Studio w witrynie Visual Studio Marketplace przy użyciu wiersza polecenia. Po dodaniu rozszerzenia do witryny Marketplace deweloperzy mogą za pomocą okna dialogowego Rozszerzenia i aktualizacje przeglądać tam nowe i zaktualizowane rozszerzenia.
VsixPublisher.exe to narzędzie wiersza polecenia do publikowania rozszerzeń Visual Studio w witrynie Marketplace. Można uzyskać do niego dostęp z ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\VsixPublisher.exe. Polecenia dostępne w tym narzędziu to: publish, deletePublisher, deleteExtension, login, logout.
Commands
publikować
Publikuje rozszerzenie w Marketplace. Rozszerzenie może być plikiem vsix, plikiem exe/msi lub linkiem. Jeśli rozszerzenie już istnieje w tej samej wersji, zastąpi rozszerzenie. Jeśli rozszerzenie jeszcze nie istnieje, utworzy nowe rozszerzenie.
| Opcje poleceń | Description |
|---|---|
| payload (wymagany) | Ścieżka do ładunku do opublikowania lub link używany jako adres URL „więcej informacji”. |
| publishManifest (wymagane) | Ścieżka do pliku manifestu publikowania, który ma zostać użyty. |
| ignoreWarnings | Lista ostrzeżeń do zignorowania podczas publikowania rozszerzenia. Te ostrzeżenia są wyświetlane jako komunikaty wiersza polecenia podczas publikowania rozszerzenia. (na przykład "VSIXValidatorWarning01, VSIXValidatorWarning02") |
| personalAccessToken | Osobisty token dostępu (PAT) używany do uwierzytelniania wydawcy. Jeśli nie określisz tej opcji lub oidc, polecenie login pobierze PAT z zapisanych poświadczeń wydawcy. Nie należy określać tej opcji razem z oidc. |
| oidc | Używa zaufanego publikowania z GitHub Actions zamiast PAT. Ta flaga nie przyjmuje wartości. Wymaga zaufanych zasad publikowania skonfigurowanych w witrynie Marketplace i uprawnienia id-token: write w zadaniu GitHub Actions. Zobacz Publikowanie z GitHub Actions przy użyciu zaufanego publikowania. |
VsixPublisher.exe publish -payload "{path to vsix}" -publishManifest "{path to vs-publish.json}" -ignoreWarnings "VSIXValidatorWarning01,VSIXValidatorWarning02" -personalAccessToken "{Your PAT}"
Aby opublikować z przepływu pracy GitHub Actions skonfigurowanego do zaufanego publikowania, użyj -oidc zamiast -personalAccessToken:
VsixPublisher.exe publish -payload "{path to vsix}" -publishManifest "{path to vs-publish.json}" -oidc
Usuń wydawcę
Usuwa wydawcę w witrynie Marketplace.
| Opcje poleceń | Description |
|---|---|
| publisherName (wymagane) | Nazwa wydawcy (na przykład identyfikator). |
| personalAccessToken (wymagany) | Osobisty token dostępu używany do uwierzytelniania wydawcy. |
VsixPublisher.exe deletePublisher -publisherName "{Publisher Name}" -personalAccessToken "{Personal Access Token}"
deleteExtension
Usuwa rozszerzenie z witryny Marketplace.
| Opcje poleceń | Description |
|---|---|
| Nazwa rozszerzenia (wymagane) | Nazwa rozszerzenia do usunięcia. |
| publisherName (wymagane) | Nazwa wydawcy (na przykład identyfikator). |
| personalAccessToken | Osobisty token dostępu używany do uwierzytelniania wydawcy. Jeśli nie podano wartości PAT, zostanie ona uzyskana od zalogowanego użytkownika. |
VsixPublisher.exe deleteExtension -extensionName "{Extension Name}" -publisherName "{Publisher Name}"
login
Loguje wydawcę do systemu.
| Opcje poleceń | Description |
|---|---|
| personalAccessToken (wymagane | Osobisty token dostępu używany do uwierzytelniania wydawcy. |
| publisherName (wymagane) | Nazwa wydawcy (na przykład identyfikator). |
| zastąpić | Określa, że każdy istniejący publikujący powinien zostać zastąpiony nowym osobistym tokenem dostępu. |
VsixPublisher.exe login -personalAccessToken "{Personal Access Token}" -publisherName "{Publisher Name}"
wylogowanie
Wylogowuje wydawcę z komputera.
| Opcje poleceń | Description |
|---|---|
| publisherName (wymagane) | Nazwa wydawcy (na przykład identyfikator). |
| ignoreMissingPublisher | Określa, że narzędzie nie powinno zgłaszać błędu, jeśli określony wydawca nie jest jeszcze zalogowany. |
VsixPublisher.exe logout -publisherName "{Publisher Name}"
createPublisher
Caution
To polecenie nie jest już dostępne. Możesz utworzyć nowego wydawcę, przechodząc do witryny Visual Studio Marketplace.
Publikowanie z GitHub Actions za pomocą zaufanego publikowania
Zaufane publikowanie umożliwia przepływowi pracy GitHub Actions publikowanie rozszerzenia Visual Studio bez przechowywania osobistego tokenu dostępu (PAT). Użyj flagi -oidc z poleceniem publish, aby uwierzytelnić się przy użyciu tożsamości OpenID Connect (OIDC) przepływu pracy.
VsixPublisher.exe żąda tokenu OIDC z GitHub Actions z atrybutem audience marketplace.visualstudio.com, a następnie wymienia go na krótkotrwały token sesji Marketplace. Narzędzie używa tego tokenu sesji do opublikowania rozszerzenia.
Wymagania wstępne dotyczące zaufanego publikowania
Przed opublikowaniem przy użyciu -oidc:
- Użyj wersji
VsixPublisher.exe, która obsługujeoidctę opcję. - Utwórz publikatora w witrynie Visual Studio Marketplace i skonfiguruj zaufaną politykę publikowania, która autoryzuje repozytorium i przepływ pracy GitHub.
- Ustaw właściwość
publisherPublisherID w manifeście publikowania na identyfikator wydawcy witryny Marketplace skojarzony z tą zasadą. - Udziel zadaniu publikowania
id-token: writeuprawnienia, aby mogło zażądać tokenu OIDC z GitHub Actions. - Udostępnij pakiet rozszerzenia, manifest publikacji, plik omówienia i wszystkie inne zasoby, do których istnieją odwołania, na runnerze Windows.
Konfigurowanie przepływu pracy
Dodaj następujące uprawnienia do zadania GitHub Actions, które publikuje rozszerzenie:
permissions:
contents: read
id-token: write
Uprawnienie id-token: write umożliwia zadaniu żądanie tokenu OIDC. Samo to nie autoryzuje publikowania w witrynie Marketplace; repozytorium i przepływ pracy muszą być również zgodne z zaufanymi zasadami publikowania wydawcy.
Gdy przepływ pracy skompiluje rozszerzenie lub pobierze jego artefakty kompilacji, dodaj krok publikowania podobny do poniższego. Zastąp ścieżki pliku wykonywalnego, payloadu i manifestu ścieżkami używanymi przez obieg pracy. Plik wykonywalny jest zwykle instalowany w katalogu <VSInstallDir>\VSSDK\VisualStudioIntegration\Tools\Bin\VsixPublisher.exe.
- name: Publish extension to Visual Studio Marketplace
shell: pwsh
run: |
& "C:\path\to\VsixPublisher.exe" publish `
-payload ".\artifacts\TestPublish.vsix" `
-publishManifest ".\publishManifest.json" `
-oidc
if ($LASTEXITCODE -ne 0) {
exit $LASTEXITCODE
}
Nie musisz uruchamiać VsixPublisher.exe login ani podawać identyfikatora PAT w przypadku korzystania z polecenia -oidc. Narzędzie automatycznie uzyskuje token z zadania GitHub Actions.
Ważne
Nie łącz -oidc z -personalAccessToken. Jeśli pozyskiwanie tokenu OIDC lub wymiana tokenów Marketplace zakończy się niepowodzeniem, publikowanie zakończy się niepowodzeniem; narzędzie nie wraca do zapisanych poświadczeń PAT.
Rozwiązywanie problemów z zaufanym publikowaniem aplikacji
| Problem | Co należy sprawdzić? |
|---|---|
Narzędzie zgłasza, że -oidc jest nieprawidłowym argumentem. |
Upewnij się, że zainstalowana wersja programu VsixPublisher.exe obsługuje zaufane publikowanie i że flaga ma jeden łącznik. |
| Narzędzie zgłasza brakujące zmienne środowiskowe GitHub Actions OIDC. | Uruchom polecenie w zadaniu GitHub Actions z uprawnieniem id-token: write. Implementacja wymaga ACTIONS_ID_TOKEN_REQUEST_URL i ACTIONS_ID_TOKEN_REQUEST_TOKEN, dostarczanych przez GitHub Actions. Uruchomienie tego samego polecenia w terminalu lokalnym nie udostępnia tych zmiennych. |
| Narzędzie nie może wymienić tokenu OIDC na token sesji witryny Marketplace. | Sprawdź, czy zaufane zasady publikowania w witrynie Marketplace autoryzują repozytorium i przepływ pracy oraz czy manifest publikowania określa prawidłowy identyfikator wydawcy. |
| Narzędzie zgłasza sprzeczne argumenty uwierzytelniania. | Usuń -personalAccessToken podczas używania -oidc. |
plik manifestu publishManifest
Plik publishManifest jest używany przez polecenie publish. Reprezentuje wszystkie metadane rozszerzenia, które Marketplace musi znać. Jeśli przekazywane rozszerzenie pochodzi z rozszerzenia VSIX, właściwość "identity" musi mieć ustawioną tylko właściwość "internalName". Dzieje się tak, ponieważ pozostałe właściwości "identity" można wygenerować z pliku vsixmanifest. Jeśli rozszerzenie jest rozszerzeniem msi/exe lub rozszerzeniem łącza, użytkownik musi podać wymagane pola we właściwości "identity". Pozostała część manifestu zawiera informacje specyficzne dla witryny Marketplace (na przykład kategorie, czy pytania i odpowiedzi są włączone itp.).
Przykład pliku publishManifest rozszerzenia VSIX:
{
"$schema": "http://json.schemastore.org/vsix-publish",
"categories": [ "build", "coding" ], // The categories of the extension. Between 1 and 3 categories are required.
"identity": {
"internalName": "MyVsixExtension" // If not specified, we try to generate the name from the display name of the extension in the vsixmanifest file.
// Required if the display name is not the actual name of the extension.
},
"overview": "overview.md", // Path to the "readme" file that gets uploaded to the Marketplace. Required.
"priceCategory": "free", // Either "free", "trial", or "paid". Defaults to "free".
"publisher": "MyPublisherName", // The name of the publisher. Required.
"private": false, // Specifies whether or not the extension should be public when uploaded. Defaults to false.
"qna": true, // Specifies whether or not the extension should have a Q&A section. Defaults to true.
"repo": "https://github.com/MyPublisherName/MyVsixExtension" // Not required.
}
Przykład pliku MSI/EXE lub LINK publishManifest:
{
"$schema": "http://json.schemastore.org/vsix-publish",
"categories": [ "build", "coding" ],
"identity": {
"description": "My extension.", // The description of the extension. Required for non-vsix extensions.
"displayName": "My Extension", // The display name of the extension. Required for non-vsix extensions.
"icon": "\\path\\to\\icon.ico", // The path to an icon file (can be relative to the json file location). Required for non-vsix extensions.
"installTargets": [ // The installation targets for the extension. Required for non-vsix extensions.
{
"sku": "Microsoft.VisualStudio.Community",
"version": "[10.0, 16.0)"
}
],
"internalName": "MyExtension",
"language": "en-US", // The default language id of the extension. Can be in the "1033" or "en-US" format. Required for non-vsix extensions.
"tags": [ "tag1", "tag2" ], // The tags for the extension. Not required.
"version": "3.7.0", // The version of the extension. Required for non-vsix extensions.
"vsixId": "MyExtension", // The vsix id of the extension. Not required but useful for showing updates to installed extensions.
},
"overview": "overview.md",
"priceCategory": "free",
"publisher": "MyPublisherName",
"private": false,
"qna": true,
"repo": "https://github.com/MyPublisherName/MyVsixExtension"
}
Pliki zasobów
Pliki zasobów można udostępnić do osadzania elementów, takich jak obrazy w pliku readme. Jeśli na przykład rozszerzenie ma następujący dokument markdown "przegląd":
TestExtension
...
This is test extension.

Aby odnaleźć „images/testlogo.png” w poprzednim przykładzie, użytkownik może podać ciąg „assetFiles” w manifeście publikowania, jak pokazano poniżej:
{
"assetFiles": [
{
"pathOnDisk": "\\path\\to\\logo.png",
"targetPath": "images/logo.png"
}
],
// other required fields
}
Przewodnik po publikowaniu
Prerequisites
Aby wykonać czynności opisane w tym przewodniku, należy zainstalować zestaw Visual Studio SDK. Aby uzyskać więcej informacji, zobacz Instalowanie zestawu SDK Visual Studio.
Tworzenie rozszerzenia programu Visual Studio
W takim przypadku użyjemy domyślnego rozszerzenia VSPackage, ale te same kroki są prawidłowe dla każdego rodzaju rozszerzenia.
- Utwórz pakiet VSPackage w języku C# o nazwie "TestPublish", który ma polecenie menu. Aby uzyskać więcej informacji, zobacz Tworzenie pierwszego rozszerzenia: Hello world.
Zapakuj swoje rozszerzenie
Zaktualizuj plik vsixmanifest, podając poprawne informacje o nazwie produktu, autorze i wersji.
Skompiluj rozszerzenie w trybie Release. Teraz rozszerzenie zostanie spakowane jako plik VSIX w folderze \bin\Release.
Możesz kliknąć dwukrotnie plik VSIX, aby zweryfikować instalację.
Testowanie rozszerzenia
Przed dystrybucją rozszerzenia, skompiluj je i przetestuj, aby upewnić się, że jest ono poprawnie zainstalowane w eksperymentalnym wystąpieniu Visual Studio.
W Visual Studio rozpocznij debugowanie. aby otworzyć eksperymentalne wystąpienie Visual Studio.
W instancji eksperymentalnej przejdź do menu Narzędzia i wybierz pozycję Rozszerzenia i aktualizacje.... Rozszerzenie TestPublish powinno pojawić się w środkowym okienku i być włączone.
W menu Narzędzia upewnij się, że jest wyświetlane polecenie testowe.
Opublikuj rozszerzenie w witrynie Marketplace za pomocą wiersza polecenia
Upewnij się, że utworzyłeś wersję Release swojego rozszerzenia i że jest ona aktualna.
Upewnij się, że utworzono pliki publishmanifest.json i overview.md.
Otwórz wiersz polecenia i przejdź do katalogu ${VSInstallDir}\VSSDK\VisualStudioIntegration\Tools\Bin\.
Aby opublikować nowe rozszerzenie, wybierz metodę uwierzytelniania dla danego środowiska.
- Aby uwierzytelnić się przy użyciu osobistego tokenu dostępu (PAT), użyj:
VsixPublisher.exe publish -payload "{Path to vsix file}" -publishManifest "{path to publishManifest file}" -personalAccessToken "{Personal Access Token}"Pomiń
-personalAccessToken, jeśli wcześniej zapisano dane logowania wydawcy przy użyciu polecenialogin.Aby uwierzytelnić się w przepływie pracy GitHub Actions skonfigurowanym do zaufanego publikowania, użyj:
VsixPublisher.exe publish -payload "{Path to vsix file}" -publishManifest "{path to publishManifest file}" -oidcPo pomyślnym opublikowaniu rozszerzenia zostanie wyświetlony następujący komunikat wiersza polecenia:
Uploaded 'MyVsixExtension' to the Marketplace.Możesz zweryfikować opublikowane nowe rozszerzenie, przechodząc do witryny Visual Studio Marketplace
Zainstaluj rozszerzenie z witryny Visual Studio Marketplace
Teraz, po opublikowaniu rozszerzenia, zainstaluj je w programie Visual Studio i przetestuj je tam.
W Visual Studio w menu Narzędzia wybierz pozycję Rozszerzenia i aktualizacje....
Wybierz pozycję Online , a następnie wyszukaj pozycję TestPublish.
Wybierz opcję Pobierz. Rozszerzenie zostanie następnie zaplanowane do zainstalowania.
Aby ukończyć instalację, zamknij wszystkie instancje programu Visual Studio.
Usuń rozszerzenie
Rozszerzenie można usunąć z witryny Visual Studio Marketplace i z komputera.
Aby usunąć rozszerzenie z witryny Marketplace za pośrednictwem wiersza polecenia
Jeśli chcesz usunąć rozszerzenie, użyj następującego polecenia:
VsixPublisher.exe deleteExtension -publisherName "TestVSIXPublisher" -extensionName "MyVsixExtension"Po pomyślnym usunięciu rozszerzenia zostanie wyświetlony następujący komunikat wiersza polecenia:
Removed 'MyVsixExtension' from the Marketplace.
Aby usunąć rozszerzenie z komputera
W Visual Studio w menu Tools wybierz Rozszerzenia i aktualizacje.
Wybierz pozycję "MyVsixExtension", a następnie wybierz pozycję Odinstaluj. Rozszerzenie zostanie następnie zaplanowane do usunięcia.
Aby ukończyć odinstalowywanie, zamknij wszystkie wystąpienia programu Visual Studio.