您好,登錄后才能下訂單哦!
如何分析Visual Studio的語言服務(wù)器協(xié)議,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
語言服務(wù)器協(xié)議(LSP)是Visual Studio Code的一個(gè)重要組件。語言服務(wù)器實(shí)際上是單獨(dú)運(yùn)行的編譯器或分析器,它負(fù)責(zé)處理各種任務(wù),如編譯器錯(cuò)誤報(bào)告、文本懸浮、代碼自動完成(也就是IntelliSense)等。
語言服務(wù)器并不是個(gè)新概念,Vim和Emacs早就在用它實(shí)現(xiàn)代碼自動完成功能。C#的語言服務(wù)器叫作OmniSharp,支持VS Code、Sublime、Atom、Emacs、Vim和Brackets。
VS Code為TypeScript實(shí)現(xiàn)了另一種語言服務(wù)器。與OmniSharp不同的是,它是基于HTTP的,“通過標(biāo)準(zhǔn)輸入和輸出與服務(wù)器進(jìn)程打交道,并使用了JSON消息格式,類似V8調(diào)試器協(xié)議的請求和響應(yīng)”。
VS Code現(xiàn)在有兩種語言服務(wù)器,微軟認(rèn)為有必要制定一個(gè)通用的標(biāo)準(zhǔn),現(xiàn)有和未來的新語言共同遵循該標(biāo)準(zhǔn)。于是,語言服務(wù)器協(xié)議出現(xiàn)了。
語言服務(wù)器協(xié)議采用JSON-RPC作為最基本的消息格式。JSON-RPC是SOAP的替代品,更為輕量級。與SOAP類似,它對傳輸層沒有特殊的要求,因此可以通過標(biāo)準(zhǔn)輸入輸出、管道、套接字等方式進(jìn)行傳輸。
Visual Studio本身不支持語言服務(wù)器協(xié)議,所以需要使用適配器,讓VS語言服務(wù)與LSP客戶端發(fā)生交互。微軟開發(fā)實(shí)驗(yàn)室提供了一個(gè)叫作語言服務(wù)器協(xié)議客戶端的工具。
除了客戶端工具,可能還需要一個(gè)語言擴(kuò)展。GitHub上的語言服務(wù)器協(xié)議示例演示了如何創(chuàng)建語言擴(kuò)展。
Adam Driscoll提供了一個(gè)更為復(fù)雜的示例,叫作PowerShell的Visual Studio語言服務(wù)器協(xié)議擴(kuò)展。Adam說:
我認(rèn)為未來要支持更多的語言需要依賴LSP客戶端。Visual Studio和Visual Studio Code共享同一個(gè)語言服務(wù),這是一個(gè)大好局面。但我們還可以做得更好。LSP現(xiàn)在不支持調(diào)試。它是一種特殊的協(xié)議。LSP在Visual Stuido中還不夠完善,文檔中已經(jīng)有一個(gè)圖表說明了這個(gè)問題。要完善它尚需時(shí)日。
看完上述內(nèi)容,你們掌握如何分析Visual Studio的語言服務(wù)器協(xié)議的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。