Visual Studioのコードリモート開発クエスト

要約: IDE新時代!

Fundebug元重版の要件に従ってには、元の作者に属します。

前回の記事で興味深いプロジェクト- Visual Studioのコードでは、ブラウザで実行、私はコーダーの開発チーム紹介Visual Studioのコードブラウザが移動しよう。これは興味深いプロジェクトですが、まもなくこの公式の後、Microsoftは単に公式の同僚のリズムのための死刑宣告で拡大VSCodeリモート開発を開始した、とは思いませんでした。以下からのコーダー公式サイトビューの情報ポイント、彼らは悪いタイミング、それの製品と考えるべきであるエンタープライズ版、に主に焦点を当てているように見えます。今日は、Microsoft自身のVSCodeベースのリモート開発プラットフォームをご紹介します。

ワークス

それらはターゲットマシン(リモートホスト)にコピーされるように、原理的には、VSCodeリモート開発の拡大は、開発者自身のマシン上でVSCodeに相当し、それは間で、クライアントとしてのサービスとして実行され、ローカルVSCodeお互いとのリモート通信プロトコルの調整と協力が、実際には、主要な開発作業は、サーバ側で実行されます。アーキテクチャは、という点でユニークである、私たちの毎日の使用を拡大するも、2つの陣営に分かれています。インターフェースのカスタマイズや関連部品、クライアント上で実行されているスタイル、テーマ、アイコンなどを含む;および開発に関連した展開の中で最もサーバー上で実行されています。実際の動作の後半では、インタフェースの対応する変化を見ることができます。

現在、VSCodeリモート開発は、次の3つの主要なモードをサポートしています。

  • リモートSSH:SSHのLinuxを介してサーバに接続します。
  • リモートコンテナ:ドッカーは、容器に接続され、
  • リモートWSL:インストール環境に接続されWSL。

本論文では、まず、SSHベースのモードについて説明します。コンフィギュレーションモード初期化容器に加えて、特定の用途に実質的に同一以外のいくつかの違いがあります。現在の方向に応じWSL、およびとして、それは、Linuxには差を実行していない仮想マシンから考えることができるので、私はそれについて特に心配していませんよ。学生は、参照することができ、この方法を使用する公式ドキュメント

前提

使用するにはVSCode Remote SSH、まずあなたがその限界と前提条件を理解させます。

  • Remote SSHサーバーとしてLinuxをサポートし、64ビット版である必要がありますのみ。唯一の完全なLinux SSHサーバーのサポート、WindowsやMacOSのは、いくつかの余分な作業を必要とするためと考えられます。ほとんどの本番サーバーでは、Linuxでなければなりませんように、私は学生のほとんどの制限が問題ではないと信じています。
  • Linuxの特定のタイプについては、明示的にサポートされている公式のは、Debian、RHEL / CentOSのとUbuntu 3のメジャーリリースが含まれます。他の多くのLinuxバージョンも動作するはずですが、保証するものではありませんが、いくつかの比較的まれなバージョンが(主にサポートの問題のglibcのと他の基本的な環境で)サポートされていませんがあります。また、CentOSのは、6.xのバージョンは通常、(参考:仕事にいくつかの調整を必要とする、上記最良の7.xのあるRHEL / CentOSの6 ON更新のglibcとのlibstdc ++を)。
  • もちろん、コンテナまたはWSL、または基本的な環境を使用する方法しなければならないマシン上ドッカーWSL。
  • ローカルマシンのコマンドラインSSHクライアントがあるはずです。Win10のために、限り古すぎないパッチとして、それが内蔵されているはずのOpenSSH。Puttyこれは、現在サポートされていません。

拡張機能をインストールします

確認して前提条件が満たされている、次の拡張子がそのVSCodeでリモート開発にインストールする必要があります。

リモート開発は、名前の拡張であるRemote Development、それはで、実際に拡張パッケージ(拡張パック)でRemote-SSHRemote-ContainersRemote-WSLおよびPython4つの拡張の組み合わせに加えて、Pythonサポートのための主要な機能、他の三つの拡張機能は明白です。現時点では、拡張は、プレビューモードのままですが、公式バージョン(インストールされていない場合は、上記の確認VSCodeバージョンを作るVSCodeにインストールすることができます1.35)。

SSHキーの設定

SSHを介してサーバに接続するには、我々は、ユーザー名/パスワードまたはSSHキーを使用することができます。環境の毎日の使用は、初期設定にもかかわらず、SSHキー方式に基づいているためではなく、一度、すべてのために、いくつかの作業がかかります。

SSH鍵の生成やリモートマシンに配布は、特定のプロセスのルーチン、サーバ運用・保守がそれらを繰り返すことはしませんです。公式文書はまた、より詳細な持つことができるステップのガイダンス、必要としている学生はを参照することができます。

ここでは、Windowsクライアントのために、生成されたキーは、通常%のUSERPROFILE%の.sshディレクトリの下に配置されることを追加します。その後の部分では、設定ディレクトリを使用します。

サーバーへの接続

SSHキーはサーバに接続するように設定することができます。最も簡単な方法は、コマンドパネルから、コマンドを選択しているRemote-SSH: Connect to Hostと、プロンプトの形式に従うuser@hostサーバのアドレスを。

しかし、あなたオープンな環境は、アドレスを手動で入力する必要がありますたびは明らかに非常に非人道的なので、リモート開発拡張機能は、サーバーの構成を保存する方法を提供してくれます。一般的な方法は、コマンドパネルを呼び出すことです:Remote-SSH: Open Configuration File

このコマンドは、さらに編集した設定ファイルを選択するために私達を促すメッセージが表示されます。

あなたは一般ユーザレベルの設定を選択する必要があり、マシンレベルとユーザー・レベルの構成を表す2つの文書上の図と考えることができます。opening'llは、それが私たちのために、デフォルトのテンプレートを提供していることを確認した後。私たちは、フォーマットすることで、サーバーのレコードを追加し、追加の位置パラメータに証明書ファイルを提供しています。サーバーアドレスとユーザー名の場合は、Enterキーを押して自分の状況を入力します。

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
# Host alias
#    HostName hostname
#    User user

Host test-server
    HostName <192.168.207.130>
    User <user>
    IdentityFile C:/Users/<user>/.ssh/id_rsa
复制代码

リモート開発の拡張をインストールした後、我々は、リモートのアイコンの下に多くの活動の柱に気づく我々はすでに定義されたサーバーが含まれているリモートビューを、表示されるアイコンをクリックします。選択サーバー、上で右クリックしConnect to Host in Current/New Window、あなたが作業を開始して、現在のウィンドウまたはサーバへの接続で新しいウィンドウを開きます。

あなたがはるかに高速に再び開いた後、いくつかの時間を消費するリモートサーバの初期化時に初めて接続します。サーバーの初期化が完了するためにすべてがうまくいけば、あなたは、リモート開発モードにVSCodeが表示されます、しばらくお待ちください。

リモート開発モデル

作業環境がリモートモードのとき、あなたはいくつかの違いと地域の発展に気づくでしょう。

まず、緑のテキストでのステータスバーの左側には、明らかに、電流が(異なる被写体を使用し、その後、色が変化してもよい)、リモートモードであることを示しています。

あなたは、「ファイルを開く」または「オープンディレクトリ」コマンドの時間を使用した場合第二に、それは今で表示され、オペレーティングシステムのネイティブファイルダイアログボックスではありません見つけるが、リモートサーバー上のパスを選択するための別のインターフェイスを持つ別ます:

また、あなたはまた、拡張ビューで次の変更に注意を払う必要があります。

私たちは、リモート・インタフェースのテーマは、拡張機能を開発、図から見ることができますし、いくつかは、ローカルVSCode、および現地での障害者の開発のための拡張のために予約されています。パフォーマンス上の理由で、これらの拡張は自動的にリモートサーバにインストールされていないことができるため、これらの拡張は、遠位端で開くように、図面内の特定の拡張を選択する必要があるInstall on SSH <server>コマンド。延長部の遠位端に装着されているため、メッセージが表示されますExtension is enabled on SSH <server> and disabled locally

ローカル少し違いについて次の操作と共通の開発。あなたはその上で、ディレクトリを開いてファイルを編集し、プログラムを実行し、することができます。しかし、それはまだ適応させるためにいくつかの時間のために持続する必要があり、それは避けられない、時には少し混乱して、あなたは無意識のうちにそれがローカル操作だと思っているならば、今はほとんどすべての操作は、サーバー上の舞台裏で行われていることに注意してください。

、Gitの中の設定をご検討くださいサーバーは、Linuxであり、クライアントがWindowsの場合、あなたはGitリポジトリを開くことになるでしょう:もう一つのポイントは、アドバイスを追加するautocrlf = false変更の問題が不可解にリードをラップする差異プラットフォームを扱う避けるために,, 。

セットアップ

私は最近、もちろん記録Visual Studioのコードパノラマ学習セットの構造が特殊なプレゼンテーションを持っているが、。VSCode設定は、リモートの開発の文脈で、リモートソース設定の添加は非常に柔軟でありながら、非常に複雑な階層構造であるため、構造が複雑です。

デフォルトでは、ローカルVSCodeのユーザープロファイルが自動的にリモートサーバ環境に適用され、私たちは余分な作業を行う必要はありません。しかし、クライアントとサーバは、その時々まだ一人で、リモート環境でのいくつかの設定を行う必要があり、それらの間のいくつかの違いが必然的に存在し、通常、異なるオペレーティングシステムです。このため、VSCodeは、コマンドを提供Open Remote Settingsリモート設定を編集するために設計されています。そして、他のコマンドは、コマンドパネル(コマンドパレット)からそれを呼び出すことができます。

また、リモート開発も独自の構成情報の一部を記録しました。これらの中で最高経営責任者であってもよいですremote.extensionKind私たちは、リモート開発モデルをサポートするために、VSCodeは、ローカルとリモートの二つの動作タイプに展開されます、この原則の前の部分で話します。一般的には、VSCodeは自動的に拡張が配置されるべき場所を決定しますが、いくつかのケースでは良い裁判官ではないかもしれないので、VSCodeは、私たちはそれを自分で設定することができます。

{
    "remote.extensionKind": {
        "ext1": "ui",
        "ext2": "workspace"
    }
}
复制代码

各拡張機能のために、私たちはそれを設定することができuiたりworkspace、ローカル/サーバー上で有効に表します。このように、VSCodeは、リモートモードが適切な治療をするために拡張されます起動したとき。あなたはまだ少し混乱している場合、私は記事のチャートの先頭に戻って見てください。

技術的ないくつかの内部

リモートモードで動作している場合、ほぼすべての開発関連の操作は、リモートサーバー上で実行されています。これは、端末(端末)を含みます。あなたはヒントから、端末内のいくつかのコマンドを入力しようとすることができ、その結果が、これは、クライアントのWindows Cmdを、本当のLinuxのターミナルではありません、見つけることができます。また、我々はまた、VSCodeは、ユーザーのリモートサーバーのディレクトリを作成しますた.vscode-server(長い中置推測が異なるセッションを区別するために使用されるが、具体的な検証がされていない、実際に完全なVSCodeプログラムである、ディレクトリ)。サーバ側の開発のすべてのオープンは自動的に対応するサブディレクトリにコピー拡張されます。

あなたは、リモートモード内のいくつかの仕事を知りたい場合は、出力パネルを持っているRemote-SSHあなたのためのいくつかの情報を提供するビューを。出力表示の内容は非常に限られているが、また、打上げサービスとコールコマンドのいくつかの詳細を見ることができます。さらに、ビューの出力Log (Remote Server)Log (Remote Extension Host)も、いくつかの関連するログサーバを示しています。

私は個人的には、ソースコードレベルからリモートで開発作業のいくつかの詳細を知りたいのですが、残念ながら、現在はMicrosoftの公式のコードベース、のみいくつかの文書のや問題ではなく、オープンソースのリモート開発の拡大をテンプレート。VSCodeが結合深さのコアアーキテクチャ実際には、詳細のいくつかのリモート開発の入念な調査を理解することができる、リモート開発ニーズと多くの点で、VSCode機能が徐々に安定化した後、延長コードの本体に組み込まれる可能性が非常に高いですもはや別の拡張として表示されません。もちろん、これは関係なく、耳を傾けるためにジャンプしたい、言葉の私の個人的なものです。

問題に注意が必要です

VSCodeリモート開発は、プレビューモードのままであり、その内部アーキテクチャの一部は、サードパーティの拡張機能は、いくつかの互換性の問題かもしれために、まだ、バグの多くがあるかもしれない、VSCodeが比較的大きい変化します。あなたは、使用に問題を見つけた場合は、に行くことができるリモート開発問題探しやレポート、または公式ドキュメントを参照してくださいトラブルシューティング一般的な問題を解決します。

あなたは、その後、開発者を拡大している場合、リモートモードで特定の慣行が機能ローカルネイティブnodejsライブラリに直接アクセスするのは特にいくつかのトラブルのために最後であってもよいことに留意する必要があります。Microsoftはまた、いくつかの一般的なシナリオは、簡単な問題につながる一覧表示、および読み取りを参照してください、解決策を提案した:リモート開発を支援します

我情

マイクロソフトの公式ビジョン、経験のある開発者の使用によると、VSCodeは遠隔主にクロスプラットフォーム開発、統合開発環境、サンドボックスのシミュレーションシナリオのために開発します。一般の個人的な開発のために、私の気持ちは、ネイティブ開発や応答よりもわずかに遅いSSHによって管理され、スムーズ感が失われた、と私は個人的には、上記のシナリオは、少なくとも今のところ、私のために特に強い需要ので、リモート開発ではありません尊重します意義は大きくありません。しかし、我々は、このように大きな想像力で、また他のゲームは、将来的には、より便利に再生されている参照する可能性があることを認識する必要があるので、それはまだ注意の価値がある方向です。

アーキテクチャの観点からは、しかし、私は、この拡張機能のいくつかは心配している必要があります。主な問題は複雑です。私が見る主な問題は、次のとおりです。

  • VSCodeは、現在設定されているレベルではすでにかなり複雑であり、あまりにより、このブランチのアーキテクチャに、公式の問題から感じることができ、管理が難しく、特定の問題に対処するより困難である必要があり、さらにはマイクロソフトの開発者が明確に与えることができません答えます。リモート開発モデルは悪化しており、この構造はより複雑になります。
  • 拡張ローカル/リモートの分類のために、また、直感的な経営拡大に追加の複雑さをもたらし、そしてません。
  • また、開発者が完全にリモートモードでは動作しないことがあり、過去の使用のいくつかを当たり前の拡張に追加の負担をもたらし、そしてこれらの開発者は、いくつかの些細な技術的な詳細を理解する必要があります。生態VSCodeの繁栄は有害である可能性が拡張する開発者のためのしきい値を上げます。

長期的には、リモート機能の開発は、より良い別の製品として独立していないのですか?ええと - 実際に、私は知りません。

Fundebugについて

Fundebugの JavaScriptの上の焦点は、マイクロチャネル、マイクロチャネルのゲーム、アリペイ小さなプログラム、リアルタイムのオンライン監視BUGネイティブ、Node.jsのとJavaアプリケーションに反応アプレット。2016以来、ダブル11が正式に立ち上げ、Fundebugは10億の+エラーイベントの合計を取り扱う、有料顧客はサンシャイン保険、クルミのプログラミング、ライチFM、1対1のヘッド、マイクロパルス、青年同盟や他の多くのコミュニティのブランドを持っています。無料試用版へようこそ!

おすすめ

転載: juejin.im/post/5d40f9555188255d4e1c0aff