8

アプリケーション内にスクリプト機能を提供し、顧客がオブジェクト モデルを使用してその機能を拡張できるようにする必要があります。IntelliSense を備えたある種の統合 C#/VB.Net エディターを提供したいと考えていましたが、AvalonEdit や ScintillaNet などの製品を調べたところ、真のコード補完を提供しているようには見えず、独自のリストを提供できる API にすぎません。ポップアップ オートコンプリート リストに表示されるアイテムの数。

したがって、Roslyn がそのような機能を提供するかどうか疑問に思っていましたか? 私が遭遇したチュートリアルと例から、Roslyn は実際には単なるコンパイラ サービスであるように見えます。

最後の手段として、顧客は VS Express のようなものを使用できますが、統合されたエディターの方が明らかに少し優れています。

(Visual Studio Tools for Applications にも出くわしましたが、これは有望に思えましたが、オンライン リソースは数年前のものであり、ドキュメントやチュートリアルが存在しないため、これについては空白にしました)。

4

3 に答える 3

3

私は確かにこの分野の専門家ではありません。でも、他に返事が来ないので、がんばります。

短い答えは「はい」だと思います。

AvalonEdit と SharpDevelop のコードを見ると、コード補完が最も難しい部分の 1 つに見えます。基本的に、どの項目が補完リストに含まれるべきかを判断するには、コンパイラ (またはパーサー) を作成する必要があります。Roslyn は、補完リストを構築するためのツールを提供しているようです。古いバージョンでは、これらのツールは VS エディターに関連付けられていましたが、最新のリリースでは独立しているという記述を目にしました。もしそうなら、これらのツールはコード補完の実装に非常に役立ちます。

私は詳細をまったく調べていませんが、私はあなたと同じ目標をいくつか持っており、Roslyn が役立つように見えるので、そうするつもりです)。

于 2012-10-14T03:45:39.563 に答える
2

あなたは、「AvalonEdit、SharpDevelop、ScintillaNet などの製品を調べたところ、真のコード補完インテリセンスを提供していないようだ」という非常に興味深い主張をしました。SharpDevelop は完全な IDE であり、「真の」コード補完 Intellisense を見つけてみませんか? 何らかの証拠を提供する必要があります。そうしないと、その陳述は無効になります。

達成したいことは、2 つの重要なコンポーネントによってのみ達成できます。

  • コード補完のコンテキストと要素を取得できる言語パーサー。それが Roslyn が提供するものですが、Roslyn は、既存のすべての C# 構文を解析できるほど成熟していません。SharpDevelop (および MonoDevelop) は、同じ目的を果たすNRefactoryを使用します。

  • 構文の強調表示をサポートする UI 要素。これは、選択した UI フレームワークに基づいて、AvalonEdit または ScintillaNet によって実現できます。

@Mystere Manが指摘したように、Visual Studio Shellはいくつかの支援を提供するかもしれません。ただ、個人的にはあまり詳しくありません。

于 2012-10-14T08:23:49.363 に答える
0

私はこれらの組み込みコンポーネントの 1 つを使用するのに非常に苦労しましたが、最終的には自分で実装することになりました。RichTextBox API を 1 日探索した後は、このサポートを快適に構築できます。PreviewKeyDown/Up で遊んで、元に戻すサポートなどで作業のバッチが再生されることを確認してください。

于 2012-12-18T01:03:25.773 に答える