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
1 Kullanı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.
2 Bu 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.
3 Bu uzantı kategorileri işbirliğine dayalı deneyimlerden yararlanabilir ve bu nedenle bunu öğrenmek için son kullanıcı geri bildirimlerine ihtiyacımız var!
4 Bunlar, konuğun çalışma zamanı araçlarının yüklü olmasını (örneğin Node.js) ve kodu yerel olarak çalıştırarak çalışmasını gerektirir.
5 Bunlar, 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, Jest Çalıştırıcısı, 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.
2 Konukları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.
4 Konukları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.
5 Test çalıştırmasının çıkışı, sonuçta elde edilen terminallerin, çıkış bölmelerinin ve hataların da konuklarla paylaşılması gerekir.
6 Bunların neredeyse tümü, doğrudan dosya oluşturmak için Node.js fs
modülünü 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 |
---|---|---|
Dosyaları fs algılamak/okumak (yapılandırma dosyası gibi) veya dizinleri listelemek için Node.js modülünü kullanma (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. |
Dizin oluşturmak için Node.js fs modülünü kullanma |
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 workspaceFolder workspace öğ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 workspaceFolder Uri.scheme birine bakın |
Dil hizmetlerini kaydederken belge düzeni belirtilmiyor (veya yöntemleri aracılığıylaLanguageClient languages.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.scheme file 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.scheme file === (örnek) için döndürülmesi Tasks WorkspaceFolder |
Ayrıca bkz.
- Dil ve platform desteği
- Live Share için bağlantı gereksinimleri
- Live Share güvenlik özellikleri
- Tüm önemli hatalar, özellik istekleri ve sınırlamalar
- Tüm özellik istekleri ve sınırlamaları
Sorun mu yaşıyorsunuz? Bkz. sorun giderme veya geri bildirim gönderme.