問題タブ [roslyn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - Roslyn を使用してコントローラーを動的にコンパイルする
Roslyn CTP がオープンになったので、C# スクリプトを書く以外に Roslyn CTP でできるすばらしいことを考えてみることができます。
asp.net mvc ではカスタム コントローラー ファクトリを作成できるため、次のようなファクトリを作成できますか。
- オンザフライでソース ファイルからコントローラーをコンパイルします。
- 新しく作成された型をランタイムにロードします (ランタイムはそれを処理できますか?)
- 同じコントローラに対する以前のリクエストがすでに行われている場合は、以前のタイプを無効にします
これにより、コードを書くだけでコントローラーのプロトタイプを作成したり、コントローラーを変更したりできるようになり、コントローラーファクトリーは再コンパイルする必要なく変更を取得することができます。
.net - Microsoft Roslyn 対 CodeDom
新しいMicrosoft Roslynに関する InfoWorld の昨日のプレス リリースから:
この種の「分解された」コンパイラの最も明らかな利点は、コンパイルと実行のプロセス全体を .Net アプリケーション内から呼び出すことができることです。Hejlsberg は、いくつかのコード スニペットを文字列として C# コンパイラに渡す C# プログラムのデモを行いました。コンパイラは、結果の IL アセンブリ コードをオブジェクトとして返し、それが実行のために共通言語ランタイム (CLR) に渡されました。ほら!Roslyn を使用すると、C# は実行時にコードを生成して呼び出す動的言語の機能を獲得します。
私は.NET 4のリリース以来、これを行うことができました.NET 4をCSharpCodeProvider.CompileAssemblyFromSource
実際に使用して、少し前に書かれたASP.Netプロジェクトでまさにそれを行います-ユーザーがテキストボックスにコードを入力し、アセンブリ/名前空間を選択できるようにしますWindows Azure でのライブ環境コード テストのために、そのコードからの出力をオンザフライで実行および表示します。
Roslyn の一部ですかCodeDom
/ Roslyn の前駆体ですか? Roslyn の特別な利点は何CodeDom
ですか?
roslyn - Roslyn にはコンパイラ ソース コードが含まれていますか?
Roslyn は、コード分析などのために多くのコンパイラ内部データ構造を公開する新しい API を提供しているようです。C# および VB コンパイラは、そのような目的のために書き直されています。新しい API 以外にコンパイラ ソースにアクセスできますか?
c# - Roslyn .rsp ファイルの参照
CSharpInteractive.rsp で、/r を使用して GAC の DLL への参照を追加できることがわかります。
独自の DLL への参照をどのように追加しますか?
System.Reflection.Assembly.LoadFrom を試しましたが、失敗しませんでしたが、機能しませんでした。
拡張メソッドを持つ DLL への参照を追加しようとしています。
インタラクティブ ウィンドウに拡張メソッドのコードを直接追加しようとすると、次のエラーが発生します。
エラー CS1109: 拡張メソッドは最上位の静的クラスで定義する必要があります。XYZ はネストされたクラスです
c# - C#インタラクティブでデバッガコンテキストを取得する
C#Interactiveは、イミディエイトウィンドウよりもはるかに強力なようです(少なくとも、LINQでよく使用されるラムダ式を処理します。VisualStudioのデバッグ「クイックウォッチ」ツールとラムダ式を参照してください)が、次のようには使用できないようです。デバッガーコンテキストを認識していないため、置換。デバッガコンテキストにアクセスする方法はありますか?
F#インタラクティブでデバッガーコンテキストを取得するのを見てきましたが、同じものが必要になる場合がありますが、新しい/異なるものが利用できる可能性があります。
http://extendedimmediatewin.codeplex.com/は便利かもしれませんが、かなり死んでいるように見えますが、2011年10月18日に、VB.Net(http://extendedimmediatewin.codeplex.com/discussions/75589)。
c# - VisitClassDeclarationnode.Roslynの識別子
宣言が見つかったソースファイルの行番号を確認するにはどうすればよいですか?
visual-studio - Roslyn CTPは、ダミーのコンソールアプリの代わりとしてどの程度安定していますか?
簡単なことをテストするために、ダミーのコンソールアプリを作成していることがよくあります。(たとえば、DateTime.ParseはYYYY-MM-DD-HH-MM-SS形式の文字列のようにどのように機能しますか?)
RoslynにはC#インタラクティブウィンドウがあり、ソリューションを開いたままIDEでこのような簡単なテストを実行できることを知っています。これは私が本当に望んでいる唯一の機能です。
しかし、Roslyn CTPはどれほど安定していますか?IDEを台無しにするのでしょうか?私がそれを使用していないときに私を遅くしますか?Roslyn機能にのみ使用されますか?それとも、オープンソリューションの通常のコンパイラを置き換えようとしますか?
c# - Roslynのインストールが私のVSインストールにどのような影響を与えるか
私はいくつかのVS拡張機能を作成しましたが、Roslynはそのような取り組みにおいて興味深いツールのようです。私はそれを試してみたいと思います。
だが
それをインストールする安全な方法はありますか?隔離されたハイブにインストールできますか?どのくらいきれいにアンインストールされますか?
私が間違っている場合は訂正してください。ただし、Roslynコンパイラが「標準」C#コンパイラに置き換わります。それが壊れた場合、結果は静かに不快になります
.net - C# でコンパイラを実装するための最も興味深く有望なアプローチは何ですか?
私は、6 か月間続くはずの卒業プロジェクトを始めたばかりです。プロジェクトの目標は、1 つのスクリプト言語用の .Net コンパイラを実装することです。カリキュラムの科目としてコンパイラの構築があり、一般的にコンパイラを実装する基本的な手順は認識していますが、バックエンドとして Bison と GCC を備えた単純なコンパイラを使用しているため、コンパイラの実装についてはあまり知りません。 .Net プラットフォーム上。
このトピックについていくつかの調査を行った結果、コード生成のための次の代替ソリューションを見つけました (パーサーなど、コンパイラの他の重要な部分については話していません。ここでは範囲外です)。
- Reflection.Emitを使用したコードの直接生成。
- 一部のコード生成を自動化するために、Reflection.Emit でCommon Compiler Interface抽象化を使用します。
- 実行時に C# および VB のコンパイルにCodeDOMを使用します。
- Roslynと呼ばれる新しい C# "サービスとしてのコンパイラ" があり、現在 CTP として利用できます。
- DLRは動的コード生成のサポートを提供し、式ツリーなどを介したランタイム コード生成用のいくつかのインターフェイスを備えています。
- Mono にはMono.Cecilライブラリが同梱されており、コード生成用の機能も備えているようです。
私のプロジェクトの主な目標は、.Net の根幹を深く掘り下げ、コンパイラの構築を学び、自分の仕事の成績を上げることです。2 つ目の目標は、寛大なオープンソース ライセンスの下で後でコミュニティに公開できるコンパイラの実装を考え出すことです。
では、ここで最も興味深く、教育的で、楽しく、有望なアプローチは何でしょうか? もう少し時間があれば、間違いなくすべてを試していたでしょうが、良い成績を得るには、6 か月以内に課題を提出する必要があります...
よろしくお願いします、アレキサンダー。
c# - C#=>Linq式コンパイラを探しています
メソッド全体を式ツリーに変換する機能を探しています。それを書き出すのは最悪だ。:)
したがって(簡単な例)次のテキストが与えられます:
これを表すメモリ内オブジェクト、または次のテキストのいずれかを取得したいと思います。
何か案は?誰かがおそらくこれを行うことができるRoslynで何かをしたことがありますか?
編集:明確化:任意のC#メソッド(たとえば、上記のメソッド)をテキストとして取り込み、結果の式を生成したいと思います。基本的に、私は任意のC#メソッドを式ツリーにコンパイルしようとしています。