27

おそらく次のリリースでこの機能を利用できるようになると思いますが、この機能を使用してできるようになると思うこと、またはこの機能を使用してやりたいことは何ですか?

個人的には、コード生成中 (MSBuild タスクなど) に、プロジェクト内のコードを理解して、より良い (より多くのコード) を生成するオプションがあればいいのにと思うことがあります。

たとえば、ある型のパラメーターが送信される部分メソッドを持つ部分クラスがある場合、コード生成時にその情報を使用してより適切なコードを生成できます。

つまり、コードを書いている時点で「意図」を公開し、コード ジェネレーターを重労働にすることができます。

partial void InitCommandForStoredProc(ref DbCommand command, string storedProcName);

部分メソッドでこの情報を指定すると、正しいコードを生成できました。

では、Compiler as a Service で何ができるようになることを望んでいますか?

4

5 に答える 5

58

(1) 実用的な答えを与えるために、LINQPad の IntelliSense は CaaS から非常に恩恵を受けます。これにより、オートコンプリートが C# と VB の両方で機能するようになります (CaaS が VB でも機能すると仮定します)。また、クールな新しいリファクタリング ツールを簡単に作成できるようにもなります。

私たちに CaaS を提供してください。そうすれば、LINQPad で何ができるかを示す展示品を作ります :)

この機能は、C# 6 / VB 12 まで待つにはあまりにも優れています。

于 2011-04-08T12:55:38.290 に答える
19

おそらく次のリリースでこの機能が利用できるようになるでしょう。

「サービスとしてのコンパイラ」戦略に関連する機能または製品のスケジュール設定または車両の出荷は発表していません。CaaSは、将来的にコンパイラアーキテクチャを構築する方法についての長期的な将来を見据えた戦略です。これは言語機能ではなく、ツールを構築するための戦略です。最近のPDCで、アンダースはそのようなツールでできるかもしれない種類のデモをいくつか行いましたが、そのようなものがいつ出荷されるかについては具体的には述べていませんでした。あなたはすぐにそれを期待するべきではありません。次のリリースで発表する唯一の機能は、C#5の非同期待機機能であり、そのスケジュールも発表していません。

あなたができると思うこと、またはこの機能を使ってやりたいことのいくつかは何ですか?

私は個人的にこの質問への回答に非常に興味がありますが、StackOverflowの質問の候補としては適切ではないことに注意してください。これは、特定の技術的なコーディングの問題ではなく、漠然としていて、推測的で主観的なものです。

シナリオを提供してくれてありがとう。それらは私にとって有用です。

更新:2011年10月

「CompilerAsAService」プロジェクト、別名「Roslyn」のプレビューリリースを出荷しました。

私たちはまだ船の乗り物を発表していません。VisualStudio11以降になります。

于 2010-11-19T14:53:47.673 に答える
7

アスペクト指向フレームワークが行う織りプロセスがはるかに強力になると思います。現在、ほとんどすべてが、ContextBoundObjectから継承したり、すべてのメソッドを仮想化したりするなど、実装に要件を課すハッキーな手法を使用しています。CaaSがあれば、AOPフレームワークは.NETの第一級市民になり、それは大きなメリットになると思います。

于 2011-05-05T19:33:26.650 に答える
3

私は、CaaS によってメタプログラミングが大きく飛躍するのではないかと考えています。Lisp マクロのようなものがエミュレートできるようになると思います。また、内部 DSL などの構文を操作したり、他の言語の構文を模倣したりする可能性も楽しみにしています。たとえば、Python のリストとタプルの構文が好きです。これらすべてが可能かどうかは、CaaS について十分に知っているわけではありませんが、想像することはできます。

于 2011-08-22T17:09:04.920 に答える
3

.NET Rocks! のエピソード #541 で、Anders は C# 5 のテーマは Compiler as a Service になると述べました。

Anders Hejlsberg:私たちが取り組んでいることの 1 つはこのテーマであり、すべてのリリースには何らかのテーマがありました。

リチャード・キャンベル:そうですね。

Anders Hejlsberg: 4.0 ではテーマは Dynamic で、3.0 では LINQ でした。5.0 のテーマはサービスでのコンパイラです。

http://www.dotnetrocks.com/text/0541/index12.html

このポッドキャストが放映された 2010 年 4 月以降、2010 PDC でのさらなる発表によると、テーマはサービスとしてのコンパイラではなく、代わりに非同期プログラミングになります。テーマの変更が必要な理由を示す発表は行われていません。

于 2010-11-24T10:22:36.520 に答える