問題タブ [nrefactory]
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.
c# - NRefactory-ファイルがありません
NRefactoryを使用しようとしても、System.IO.FileNotFound例外が発生します。私はそれを機能させるために多くの方法を試しました:-Mono.Cecilを自動的にインストールするNuGetパッケージを使用しました-NRefactoryとMono.Cecilをダウンロードし、VS2010からすべてのDLLをコンパイルしました。
私は何が間違っているのですか?エラーダンプは次のとおりです。
編集:これは問題を引き起こすコードです:
そして、これは一連の方法です。
さらに重要なことは、例外はこのメソッド内のtry-catchブロックによってキャッチされていませんが、このメソッドの外部で->呼び出されたときに発生しますが、その中のコード行の前に発生します。
c# - 簡単な例から始める NRefactory 5
リファクタリングを行うために、CSharp ファイルの解析に NRefactory 5 の使用を開始したいと思います。しかし、ドキュメントはほとんどありません。だから私は試してみましたが失敗しました: AstNode
cs ファイルからツリーを取得できるかどうかを確認するために、次のコードから始めました。
解析によっていくつかのノードが生成されることを期待していますが、そうではありません。誰かが私を案内できますか?
c# - NRefactoryはどのようにして元のフォーマットを維持できますか
こんにちは私はNRefactoryを使用して文字列定数を抽出し、i18nの静的変数で置き換えます。正常に実行できますが、GetText()を使用してコードを出力すると、元の形式が保持されません。最小限のフォーマット変更でそれをやりたいです。
ありがとう。
c# - NRefactory 5を使用したC#コード補完
NRefactory 5について知りましたが、これが現在の問題に最も適したソリューションだと思います。現在、コード補完を提供したい小さなC#スクリプトアプリケーションを開発しています。最近まで、私はMicrosoftの「Roslyn」プロジェクトを使用してこれを行ってきました。ただし、このプロジェクトの最新の更新には.Net Framework 4.5が必要なため、アプリをWin XPでも実行したいので、これを使用することはできません。そのため、ここで別のテクノロジーに切り替える必要があります。
私の問題はコンパイルのものではありません。これは、.Net CodeDomProviderによっても、もう少し努力して行うことができます。問題はコード補完のものです。私の知る限り、NRefactory 5は、コード補完を提供するために必要なすべてのもの(パーサー、型システムなど)を提供しますが、その使用方法がわかりません。SharpDevelopのソースコードを調べましたが、コードの補完にNRefactory 5を使用せず、逆コンパイラとしてのみ使用しています。ネットでコード補完に使用する方法の例も見つからなかったので、ここで役立つかもしれないと思いました。
状況は以下のとおりです。スクリプトコードを含む単一のファイルがあります。実際には、ファイルではなく、エディターコントロールから取得した文字列(ちなみに、これにはAvalonEditを使用しています。すばらしいエディターです!)と、参照する必要のあるいくつかのアセンブリです。したがって、ソリューションファイルやプロジェクトファイルなどはなく、ソースコードとアセンブリの1つの文字列だけです。
NRefactory 5に付属しているデモとコードプロジェクトに関する記事を見て、次のようなものを思いつきました。
私の問題は、私がどのように進むべきかについての手がかりがないということです。それが私の目標を達成するための正しいアプローチであるかどうかさえわかりません。CSharpCompletionEngineの使用方法は?他に何が必要ですか?現時点では非常に不明確なことがたくさんありますので、これに光を当てていただければ幸いです。
よろしくお願いします!
c# - NRefactoryを使用して.csprojファイル内の参照を解決する
NRefactoryを使用して、.csprojファイルにリストされているすべてのコンパイルファイルを解析しようとしていますが、プロジェクト内のすべてのタイプを解決できるようにしたいと考えています。
.csprojにも含まれているアセンブリ参照を追加しないと、すべてのタイプを解決することはできません。これは私が苦労していることです。
.csprojからの抜粋:
ご覧のとおり、XNA参照にはフルネームが付けられているため、を使用して簡単にアセンブリを取得できますType.GetType("fullname").Assembly
。ただし、公開鍵を渡すSystem
かどうかmscorlib
にかかわらず、nullが返されます。
.csprojファイルにあるSystem
単語やその他の情報から完全なタイプ名を取得するにはどうすればよいですか?System
c# - NRefactory5は空の行を追加します
NRefactory 5を使用してC#コードを生成しています。場合によっては、より読みやすいコードを取得するために、出力コードに空の行を挿入する必要があります。
NRefactoryでこれを行うコマンドが見つからないため、現時点で見つかった唯一の解決策は、syntaxTree.getText()関数から取得した出力文字列に「\n」を追加することです。
より良い解決策がありますか?
ありがとう
nrefactory - NRefactory 解析済みコード - クラスは現在継承していますか?
現在のクラスが実際に別のクラスから継承されている (または継承されていない) 場合、NFactory 解析ツリーで識別する最良の方法は何ですか?
c# - NRefactory: プロパティ属性の未解決の名前付き引数にアクセスするにはどうすればよいですか?
簡単な質問の長い説明を前もってお詫びしますが、私がやろうとしていることを人々が正しく理解できるようにしたい.
バックグラウンド
SqlMetal によって生成されたファイルを読み取り、単純な挿入、更新、削除、選択のメソッドを含むクラスを作成して、Web サービスに公開できるツールを作成しています。ここでの主な利点は、テーブルが変更された場合、ツールを再実行するだけでデータベース関連のコードが自動的に更新され、それを使用するすべての場所でコンパイル エラーが生成されるため、手動で変更する必要がある場所を簡単に追跡できることです。作られる。たとえば、次のフィールドを持つ Customer テーブルがあるとします。
- CustomerId (PK、ID)
- ファーストネーム
- 苗字
次のように、Insert メソッドと Delete メソッドを生成できるようにしたいと考えています。
SqlMetal を使用して Customer クラスを生成しています。次に、上記の方法で別のクラスを作成するために、その .cs ファイルを新しいツールに読み込みます。次に、この新しいクラスを Web サービスに公開して、基礎となるデータベースを公開することなく、この機能へのアクセスを許可できます。NRefactory を使用して SqlMetal で生成されたファイルを読み込んでいますが、これまでのところうまくいっていますが、Customer クラスのプロパティ属性を読み込もうとして問題が発生しました。
SqlMetal は、ColumnAttribute を使用してそのクラスを生成し、データベース列から派生した各プロパティを識別します。ColumnAttribute には、データベース列のプロパティを記述するためのいくつかの引数があります。上記の例では、次のようなものが生成されます。
問題
ご覧のとおり、SqlMetal は、どの列がデータベースで生成され、どの列が主キーの一部であるかを識別するために必要な属性を提供します。したがって、このファイルを NRefactory に読み込んで型を解決すると、この情報をすべて取得できると期待できます。ただし、ColumnAttribute に到達することはできますが、そのすべての引数が解決されていないため、NamedArguments または PositionalArguments プロパティを介してアクセスできないことがわかりました。
これが私のコードです:
コレクションには要素が含まれていないため、IAttribute.NamedArguments をループしようとするまで、これはすべて機能します。ただし、デバッガーを使用して「attr」の値を調べると、「unresolved」というプライベート変数があり、必要なすべての引数のリストが含まれていることがわかりますが、これにアクセスする方法が見つかりません。コードを通して。
この「未解決」変数の内容を取得するにはどうすればよいですか? リゾルバーでさらに何かをする必要がありますか? NRefactory を使用するのはこれが初めてなので、まだすべてのニュアンスに精通しているわけではありません。Google でこのレベルの深さの例を見つけるのに苦労しており、私が見た NRefactory のドキュメントはそれをカバーしていないようです。どんな助けでも大歓迎です。
c# - クラスを持つ NRefactory 属性
NRefactory を使用して、このクラスの上のすべてのクラスと属性を見つけようとしていますが、残念ながら (まだ) これを達成できません。
この問題に取り組むための最良のアプローチは何ですか? 属性を見つけることはできますが、それが特定のクラスに属していることをどのように確認できますか?
c# - NRefactory 型宣言に名前空間を追加
現在、NRefactory でプロジェクトに取り組んでいます。「Class」や「Interface」などの型宣言を .cs ファイルからフィルタリングしています。これらの型宣言をカスタム名前空間に配置したいのですが、何らかの理由で機能しません。この問題で私を助けることができる人はいますか?
私は次のコードを試しました: