Bagikan melalui


Ekstensi dan Dukungan Ekosistem

Salah satu tujuan utama Visual Studio Live Share adalah untuk memungkinkan pengembang berkolaborasi satu sama lain, dari kenyamanan alat favorit mereka, dan sangat disesuaikan. Dengan cara ini, interaksi ad-hoc dapat sering terjadi, sambil tetap akrab secara visual dan ergonomi, terlepas dari apa yang Anda bantu. Untuk mencapai hal ini, sangat penting bahwa peserta dalam sesi kolaborasi dapat terus menggunakan ekstensi apa pun yang mendukung preferensi pribadi dan alur kerja mereka (misalnya tema warna/ikon, pengikatan utama, peningkatan produktivitas editor).

Selain itu, untuk membuat tindakan bergabung dengan sesi kolaborasi seketika, sambil tetap sangat produktif, tujuan Visual Studio Live Share adalah untuk memungkinkan tamu secara otomatis memanfaatkan alat khusus proyek yang telah dibagikan host mereka. Dengan cara ini, Anda cukup mengklik tautan, meluncurkan alat pilihan Anda, dan mulai berkolaborasi, tanpa penyiapan tambahan. Untuk mencapai hal ini, sangat penting bahwa ekstensi, yang mendukung alur kerja pengeditan inti, build, dan debug, secara transparan "di-remoted" dari host ke tamu, sehingga hal-hal seperti penyelesaian otomatis, go-to-definition, dan debugging "just work".

Dokumen ini mencakup status yang diketahui saat ini untuk ekosistem ekstensi yang luas, serta "kartu skor" untuk tujuan yang disebutkan di atas. Jika Anda menemukan ekstensi yang tidak memenuhi kriteria ini, dan sangat penting untuk alur kerja pribadi Anda, beri tahu kami!

Ekstensi Khusus Pengguna

Ekstensi yang mendukung penyesuaian khusus pengguna harus berfungsi untuk host, dan harus berfungsi untuk semua tamu. Jika ekstensi tidak berfungsi dengan baik untuk host, itu akan menjadi regresi, dan kemungkinan bug di Visual Studio Live Share (silakan ajukan masalah jika Anda melihatnya!). Jika ekstensi tidak berperilaku seperti yang diharapkan untuk tamu, ekstensi mungkin memerlukan perubahan pada ekstensi itu sendiri, dan kami akan bekerja dengan ekosistem untuk mengatasi/meningkatkan skenario ini.

Visual Studio Code

Kategori Misalnya Didukung Tamu? Kolaboratif?
Tema Warna One Dark Pro, Output Colorizer, Rainbow String, Colored Regions, Indented Block Highlighting, Todo Highlight, Bracket Pair Colorizer N/A
Set Ikon vscode-icons, Visual Studio Classic Icons N/A
Pengikatan kunci Vim, IntelliJ IDEA Keybindings, Emacs Friendly Keymap N/A
Cuplikan Cuplikan Angular v5, Cuplikan HTML, Ikon SVG, Header File N/A 1
Organization Sinkronisasi Pengaturan, Manajer Proyek, Timeit, Titik Pemeriksaan, Pengurai TODO, Favorit (❌), Marka Buku (❌) 2 N/A 3
Produktivitas GitLens, Tag Ganti Nama Otomatis, Kerangka Kode, Sorotan Warna, Pemilihan Kenaikan, Bracketeer, Pratinjau Gambar, Pembantu JSON (Hover), Pemilih Warna, Salin Word di Kursor, CodeMetrics (CodeLens), Git Co-Authors, JavaScript Booster (CodeActions), Turbo Console Log, Goto Next/Previous Member, Auto-scroll, NPM Impor Versi (❌), Biaya Impor (❌) 2 3
REPL Klien REST, Code Runner, Quokka.js, R 4 3
Resource Managers mssql, ftp-simple, Azure Functions, Docker, Brew Services 5 3

1 Kecuali pengguna sudah terbiasa dengan cuplikan, mereka tidak akan mengharapkannya tersedia, dan oleh karena itu, membuatnya dibagikan tidak selalu masuk akal.

2 Kategori ekstensi ini sangat beragam, sehingga tidak mungkin untuk mengatakan semuanya berfungsi. Namun, secara teori, mereka harus, dan kita akan melacak kunci yang tidak.

3 Kategori ekstensi ini dapat memperoleh manfaat dari pengalaman kolaboratif, sehingga kami memerlukan umpan balik pengguna akhir untuk mengetahuinya!

4 Ini mengharuskan tamu menginstal alat runtime (misalnya Node.js), dan bekerja dengan menjalankan kode secara lokal.

5 Ini bekerja dengan menyambungkan ke server semacam itu, dan dapat bekerja dengan server terpusat, server yang telah dibagikan tamu.

Ekstensi Khusus Proyek

Ekstensi yang diinstal host, yang mendukung pengeditan inti, membangun, dan men-debug aplikasi, dan khusus untuk bahasa/platform/pustaka/SDK, harus tersedia secara otomatis untuk tamu, tanpa mengharuskan mereka menginstal apa pun. Dengan cara ini, host dapat mengatur lingkungan mereka untuk mendukung pengembangan proyek yang produktif, dan memungkinkan tamu mereka untuk langsung bergabung dengan mereka, tanpa prasyarat tambahan. Karena ekstensi khusus proyek tidak subjektif atau pribadi dengan cara apa pun, ekstensi tersebut dapat dibagikan secara deterministik dari host-ke-tamu, tanpa memengaruhi lingkungan siapa pun yang akrab.

Selain itu, untuk mendukung ekstensi khusus proyek yang telah diinstal tamu, tetapi host tidak, mereka idealnya akan memberikan pengalaman yang terdegradasi namun fungsional (misalnya mendapatkan intellisense file tunggal, mampu memformat dokumen).

Kategori Misalnya Para? Didukung Tamu?
Tata Bahasa / Penyorotan sintaksis Fish Shell, Nginx, Vetur, DotEnv, ES6 String HTML, Todo+, Rainbow CSV
Layanan Bahasa YAML, Path Intellisense, ARM 1 2
Skema JSON Azure Functions
Linter ESLint, Markdownlint, Pemeriksa Ejaan Kode, PHPCS 2
Pemformat Lebih cantik, Percantik 2
Debugger Python, Debugger untuk Chrome 3 4
Uji Runner Java Test Runner, Mocha Sidebar, Jest Runner, Neptune 5 2
Peninjau File Kustom Pratinjau SVG, GraphViz, Ukuran Gambar Markdown
Generator File/Proyek Generator Proyek Azure Functions, C/C++ 6
Penyedia kontrol sumber SVN, Hg

1 Saat ini hanya C# dan JavaScript/TypeScript.

2 Hanya akan mendukung dokumen aktif saat ini, karena tamu tidak memiliki akses file lokal.

3 Pengalaman penelusuran kesalahan inti dibagikan, namun, server apa pun yang diluncurkan tidak diteruskan secara otomatis.

4 Tamu tidak memiliki salinan lokal aplikasi, dan oleh karena itu, aplikasi yang sedang berjalan dan sesi debug apa pun perlu dimulai di komputer host.

5 Output uji coba akan mengharuskan terminal, panel output, dan kesalahan yang dihasilkan juga dibagikan dengan tamu.

6 Hampir semua ini akan menggunakan modul Node.js fs secara langsung untuk membuat file, yang tidak akan berfungsi.

Masalah Umum

Berikut ini adalah masalah ekstensi yang saat ini diketahui, yang dapat mencegah mereka bekerja untuk tamu dalam konteks sesi kolaborasi (bersama dengan solusinya), dan oleh karena itu, dapat memengaruhi alur kerja mereka:

Visual Studio Code

Masalah Alasan Solusi Sementara
Menggunakan modul Node.js fs untuk mendeteksi/membaca file (misalnya file konfigurasi), atau menghitung direktori (dan Anda bukan layanan bahasa). Tamu tidak memiliki akses file lokal. 1. Menurunkan pengalaman pengguna dengan baik (jika memungkinkan).

2. Gunakan openTextDocument API dan findFiles ruang kerja untuk membaca dan menghitung file.
Menggunakan modul Node.js fs untuk membuat atau menulis file Sama seperti di atas N/A Anda dapat menggunakan openTextDocument(Uri) API untuk membuat untitled file, tetapi Anda tidak dapat menyimpannya langsung ke sistem file, di jalur tertentu.
Bergantung pada pustaka atau alat yang dibundel proyek Sama seperti di atas 1. Bundel versi fallback dependensi dengan ekstensi

2. Dukung penginstalan global untuk membuka blokir tamu jika mereka memilih untuk menginstalnya secara eksplisit.

3. Jarak jauh status/tindakan jika memungkinkan, karena host akan memiliki dependensi yang tepat yang tersedia.
Menggunakan modul Node.js fs untuk membuat direktori Sama seperti di atas N/A
Membatasi fungsionalitas ke dokumen yang menggunakan file skema. File di sisi tamu menggunakan vsls skema . Menambahkan dukungan untuk vsls dokumen (contoh)
Uri.file Menggunakan metode dan/atau Uri.fsPath/TextDocument.fileName anggota untuk membuat serialisasi/mengurai URI Sama seperti di atas Gunakan Uri.parse dan Url.toString() sebagai gantinya, yang memelihara dan menghormati skema file (contoh)
workspace.openTextDocument Menggunakan metode dengan jalur file alih-alihUri Sama seperti di atas Uri Menyediakan instans alih-alih string jalur file mentah (contoh)
workspace.rootPath Menggunakan properti untuk mendeteksi keberadaan ruang kerja Properti workspace.rootPath memanggil Uri.fsPath pada yang pertama workspaceFolder di workspace, yang memiliki masalah yang sama yang disebutkan di atas workspace.workspaceFolders Gunakan properti untuk mendeteksi keberadaan ruang kerja sebagai gantinya, dan jika diperlukan, lihat masing-masing workspaceFolderUri.scheme untuk menentukan apakah itu lokal atau tidak
Tidak menentukan skema dokumen saat mendaftarkan layanan bahasa (baik melalui LanguageClient, atau languages.register* metode ) Tamu menerima hasil layanan bahasa dari ekstensi lokal mereka, dan host, dan oleh karena itu, jika kedua peserta memiliki ekstensi layanan bahasa yang sama yang diinstal, tamu akan melihat entri duplikat untuk hal-hal tertentu (misalnya penyelesaian otomatis, tindakan kode) Membatasi layanan bahasa hanya file dan untitled skema (contoh)
Tidak memeriksa dokumen Uri.scheme sebelum mengisi DiagnosticCollection untuk dokumen tersebut Sama seperti di atas Hanya hasilkan Diagnostics untuk documents yang Uri.schemefile === (contoh)
Tidak memeriksa skema ruang kerja saat kembali Tasks dari kustom TaskProvider Tamu menampilkan semua tugas jarak jauh dan lokal, dan oleh karena itu, akan menampilkan duplikat jika kedua peserta memiliki ekstensi yang sama yang diinstal Hanya kembali Tasks untuk WorkspaceFolders yang Uri.scheme === file (contoh)

Lihat juga

Mengalami masalah? Lihat pemecahan masalah atau berikan umpan balik.