Uzantılar ve Ekosistem Desteği

Visual Studio Live Share'in birincil hedeflerinden biri, geliştiricilerin sık kullandıkları ve yüksek oranda özelleştirilmiş araçların rahatlığından birbirleriyle işbirliği yapmalarını sağlamaktır. Bu şekilde geçici etkileşimler sık sık gerçekleşebilir ve yardımcı olduğunuz şey ne olursa olsun görsel olarak tanıdık ve ergonomik kalır. Bunu başarmak için, bir işbirliği oturumundaki katılımcıların kişisel tercihlerini ve iş akışlarını destekleyen uzantıları (renk/simge temaları, anahtar bağlamaları, düzenleyici üretkenlik artırıcıları gibi) kullanmaya devam edebilmeleri kritik önem taşır.

Ayrıca, yüksek üretkenliğe sahip kalırken işbirliği oturumuna mümkün olduğunca hızlı bir şekilde katılma eylemini gerçekleştirmek için Visual Studio Live Share'in amacı, konukların konaklarının paylaştığı projeye özgü araçlardan otomatik olarak yararlanmasını sağlamaktır. Bu şekilde, ek kurulum yapmadan bir bağlantıya tıklayabilir, istediğiniz aracı başlatabilir ve işbirliğine başlayabilirsiniz. Bunu başarmak için, çekirdek düzenleme, derleme ve hata ayıklama iş akışını destekleyen uzantıların konaktan konuka saydam bir şekilde "uzak" olması, böylece otomatik tamamlama, tanıma gitme ve hata ayıklama gibi işlemlerin "yalnızca çalışması" kritik önem taşır.

Bu belge, geniş uzantı ekosistemi için bilinen mevcut durumu ve yukarıda belirtilen hedeflerin "karnesini" kapsar. Bu ölçütleri karşılamayan ve kişisel iş akışınız için kritik öneme sahip bir uzantıyla karşılaşırsanız lütfen bize bildirin!

Kullanıcıya Özgü Uzantılar

Kullanıcıya özgü özelleştirmeleri destekleyen uzantıların konak için çalışması ve tüm konuklar için çalışması gerekir. Bir uzantı konak için düzgün çalışmıyorsa, bu bir regresyon olabilir ve büyük olasılıkla Visual Studio Live Share'de bir hatadır (görürseniz lütfen bir sorun oluşturun!). Bir uzantı bir konuk için beklendiği gibi davranmazsa, uzantının kendisinde değişiklik yapılması gerekebilir ve bu senaryoları ele almak/iyileştirmek için ekosistemle birlikte çalışırız.

Visual Studio Code

Kategori Örnekler Konuk Destekli mi? Işbirlikçi?
Renk Temaları One Dark Pro, Output Colorizer, Rainbow String, Color Regions, Indented Block Highlighting, Todo Highlight, Bracket Pair Colorizer Yok
Simge Kümeleri vscode-icons, Visual Studio Klasik Simgeleri Yok
Anahtar bağlamaları Vim, IntelliJ IDEA Keybindings, Emacs Friendly Keymap Yok
Kod Parçacıkları Angular v5 Kod Parçacıkları, HTML Kod Parçacıkları, SVG Simgeleri, Dosya Üst Bilgisi Yok 1
Kuruluş Ayarlar Eşitleme, Project Manager, Timeit, Denetim Noktaları, TODO Ayrıştırıcısı, Sık Kullanılanlar (❌), Yer İşaretleri (❌) 2 Yok 3
Üretkenlik GitLens, Otomatik Yeniden Adlandırma Etiketi, Kod Ana Hattı, Renk Vurgusu, Artım Seçimi, Köşeli Ayraç, Görüntü Önizleme, JSON Yardımcısı (Vurgulama), Renk Seçici, İmleçte Sözcük Kopyalama, CodeMetrics (CodeLens), Git Ortak Yazarları, JavaScript Güçlendiricisi (CodeActions), Turbo Konsol Günlüğü, Sonraki/Önceki Üye, Otomatik kaydırma, NPM İçeri Aktarma Sürümü (❌), İçeri Aktarma Maliyeti (❌) 2 3
REPL'ler REST İstemcisi, Kod Çalıştırıcısı, Quokka.js, R 4 3
Kaynak Yöneticileri mssql, ftp-simple, Azure İşlevleri, Docker, Brew Services 5 3

1Kullanıcı bir kod parçacığına zaten aşina değilse, bu kod parçacığının kullanılabilir olmasını beklemez ve bu nedenle paylaştırmak mantıklı olmayabilir.

2Bu uzantı kategorileri o kadar çeşitlidir ki, hepsinin çalıştığını söylemek imkansızdır. Ancak teoride öyle olmalı ve biz de olmayanları takip edeceğiz.

3Bu uzantı kategorileri işbirliğine dayalı deneyimlerden yararlanabilir ve bu nedenle bunu öğrenmek için son kullanıcı geri bildirimlerine ihtiyacımız var!

4Bunlar, konuğun çalışma zamanı araçlarının yüklü olmasını (ör. Node.js) ve kodu yerel olarak çalıştırarak çalışmasını gerektirir.

5Bunlar, bir tür sunucuya bağlanarak çalışır ve merkezi sunucularla, konuğun paylaştığı sunucularla çalışabilir.

Projeye Özgü Uzantılar

Bir uygulamanın çekirdek düzenlemesini, derlemesini ve hata ayıklamasını destekleyen ve bir dile/platform/kitaplık/SDK'ya özgü konak yüklü uzantılar, herhangi bir şey yüklemelerine gerek kalmadan konuklara otomatik olarak kullanılabilir olmalıdır. Bu şekilde, konaklar bir projenin verimli bir şekilde geliştirilmesini desteklemek için ortamlarını ayarlayabilir ve ek önkoşullar olmadan konuklarının bunlara anında katılmasına izin verebilir. Projeye özgü uzantılar hiçbir şekilde öznel veya kişisel olmadığından, herhangi birinin tanıdık ortamını etkilemeden konaktan konuka kesin olarak paylaşılabilir.

Ayrıca, bir konuğun yüklediği ancak konağın yüklemediği projeye özgü uzantıları desteklemek için, ideal olarak düzeyi düşürülmüş ancak işlevsel bir deneyim (örneğin, tek dosya intellisense alma, belgeyi biçimlendirebilme) sağlar.

Kategori Örnekler Paylaşılan? Konuk Destekli mi?
Dil Bilgisi / Söz dizimi vurgulama Fish Shell, Nginx, Vetur, DotEnv, ES6 String HTML, Todo+, Rainbow CSV
Dil Hizmetleri YAML, Path Intellisense, ARM 1 2
JSON Şemaları Azure Functions
Linters ESLint, Markdownlint, Kod Yazım Denetleyicisi, PHPCS 2
Biçimlendiriciler Daha Güzel, Güzel 2
Hata ayıklayıcı Python, Chrome için Hata Ayıklayıcı 3 4
Test Çalıştırıcıları Java Test Çalıştırıcısı, Mocha Kenar Çubuğu, Postman Runner, Jest Runner, Neptune 5 2
Özel Dosya Önİzleyicileri SVG Önizleme, GraphViz, Markdown Görüntü Boyutu
Dosya/Proje Oluşturucuları Azure İşlevleri, C/C++ Proje Oluşturucu 6
Kaynak denetimi sağlayıcıları SVN, Hg

1Şu anda yalnızca C# ve JavaScript/TypeScript.

2Konukların yerel dosya erişimi olmadığından yalnızca geçerli etkin belgeyi destekler.

3Çekirdek hata ayıklama deneyimi paylaşılır, ancak başlatılan sunucular otomatik olarak iletilir.

4Konukların uygulamanın yerel bir kopyası yoktur ve bu nedenle çalışan uygulamanın ve hata ayıklama oturumlarının konağın makinesinde başlatılması gerekir.

5Test çalıştırmasının çıkışı, sonuçta elde edilen terminallerin, çıkış bölmelerinin ve hataların da konuklarla paylaşılması gerekir.

6Bunların neredeyse tümü, dosyaları oluşturmak için node.js fs modülünü doğrudan kullanır ve bu da işe yaramaz.

Bilinen Sorunlar

Aşağıda, bir işbirliği oturumu bağlamında (geçici çözümleriyle birlikte) konuklar için çalışmalarını engelleyebilecek ve bu nedenle iş akışlarını etkileyebilecek bilinen uzantı sorunları bulunmaktadır:

Visual Studio Code

Sorun Nedeni Geçici çözüm
Node.js fs modülünü kullanarak dosyaları algılayın/okuyun (örneğin, bir yapılandırma dosyası) veya dizinleri numaralandırın (ve dil hizmeti değilsiniz). Konuklar yerel dosya erişimine sahip değildir. 1. Kullanıcı deneyimini (mümkünse) düzgün bir şekilde düşürebilir.

2. Dosyaları okumak ve listelemek için ve findFiles çalışma alanı API'lerini kullanınopenTextDocument.
Dosya oluşturmak veya yazmak için Node.js fs modülünü kullanma Yukarıdakiyle aynı Yok API'yi openTextDocument(Uri) kullanarak bir untitled dosya oluşturabilirsiniz, ancak bunu doğrudan belirli bir yolda dosya sistemine kaydedemezsiniz.
Proje paketlenmiş bir kitaplığa veya aralığa bağlı olarak Yukarıdakiyle aynı 1. Uzantıyla bağımlılığın geri dönüş sürümünü paketle

2. Açıkça yüklemeyi tercih eden konukların engellemesini kaldırmak için genel yüklemeyi destekleyin.

3. Mümkünse durumu/eylemi uzak kullanın, çünkü konağın kullanılabilir doğru bağımlılıkları olacaktır.
Node.js fs modülünü kullanarak dizin oluşturma Yukarıdakiyle aynı Yok
İşlevselliği, düzeni kullanan belgelerle file kısıtlama. Konuk tarafındaki dosyalar düzeni kullanır vsls . Belgeler için vsls destek ekleme (örnek)
URI'leri Uri.file serileştirmek/ayrıştırmak için yöntemini ve/veya Uri.fsPath/TextDocument.fileName üyelerini kullanma Yukarıdakiyle aynı Bunun yerine, dosya düzenlerini koruyan ve buna saygı gösteren ve Url.toString() kullanın Uri.parse (örnek)
workspace.openTextDocument yöntemini bir yerine dosya yolu ile kullanmaUri Yukarıdakiyle aynı Uri Ham dosya yolu dizesi yerine örnek sağlama (örnek)
workspace.rootPath Çalışma alanının varlığını algılamak için özelliğini kullanma özelliği, workspace.rootPath yukarıda belirtilen sorunla aynı olan içindeki ilk workspaceFolderworkspaceöğesini çağırırUri.fsPath. workspace.workspaceFolders Bunun yerine bir çalışma alanının varlığını algılamak için özelliğini kullanın ve gerekirse yerel olup olmadığını belirlemek için her workspaceFolderUri.scheme birine bakın
Dil hizmetlerini kaydederken belge düzeni belirtilmiyor (veya yöntemleri aracılığıylaLanguageClientlanguages.register*) Konuklar hem yerel uzantılarından hem de konaktan dil hizmeti sonuçlarını alır ve bu nedenle, her iki katılımcının da aynı dil hizmeti uzantısı yüklüyse, konuklar belirli şeyler için yinelenen girişler görürler (örneğin, otomatik tamamlama, kod eylemleri) Dil hizmetlerini yalnızca file ve untitled düzenleriyle kısıtlama (örnek)
Bir belgeyi doldurmadan DiagnosticCollection önce denetlenmiyor Uri.scheme Yukarıdakiyle aynı Yalnızca kimin === Uri.schemefile için documents oluştur Diagnostics (örnek)
Özel bir kaynaktan geri dönerken Tasks çalışma alanı düzeni denetlenmiyor TaskProvider Konuklar tüm uzak ve yerel görevleri görüntüler ve bu nedenle her iki katılımcının da aynı uzantı yüklüyse yinelenenleri görüntüler Yalnızca kiminUri.schemefile === (örnek) için döndürülmesi TasksWorkspaceFolder

Ayrıca bkz.

Sorun mu yaşıyorsunuz? Bkz. sorun giderme veya geri bildirim gönderme.