問題タブ [codedom]
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# - 生成された CodeDom コードをプログラムでフォーマットする
CTRL次のようなコードから生成された CS が、 + K+を押したかのように適切にフォーマットされていることを確認するにはどうすればよいDですか? C#です
私たちは次のようなことをしています:
c# - 別のクラスを継承し、CodeDom で型パラメーターを渡すクラスを作成するにはどうすればよいですか?
結果のクラス宣言は次のようになります。
}
このコード(抜粋):
次のクラス宣言を生成します。
私は何を間違っていますか?
c# - コードダムで生成されたファイル内のバージョン番号を制御するものは何ですか?
codedom で生成されたファイル内のバージョン番号を制御するものは何ですか?
一部の開発者は以下を取得します。
他の人が得る間:
しかし、誰もが .Net 3.5 SP1 を実行しているようです。
ビルド番号が 4005 のものと 3082 のものがあるのはなぜですか?
これは、ソース管理にとって本当に苦痛です。
c# - CodeDOM を使用してメンバー オブジェクトを公開するにはどうすればよいですか?
System.CodeDom 名前空間を使用してアセンブリをコンパイルする方法に関するチュートリアルをいたるところで目にします。
しかし、ランタイム コンパイル済みアセンブリからアセンブリのメンバー オブジェクトにアクセスするにはどうすればよいでしょうか (クラスへのアクセスについて話しているのではなく、特定のメンバー変数にアクセスしたいのです)。Microsoft Script Control では、AddObject メソッドを使用して実行できます。
実行時にコンパイルされたアセンブリが他のすべての通常のアセンブリと同じように動作する場合、.NET リモート処理を使用する必要があると思いますか? でもやり過ぎじゃない?もっと簡単な方法があればいいのに。
javascript - 実行時の dotNet コードの解釈および/または受信
Html には、Javascript を少しだけ埋め込むことができます (たとえば、onclick
イベント ハンドラで定義)。
C# などの dotNet 言語を使用して Html ブラウザーを作成している場合、そのような Javascript フラグメントを実行するために使用できるテクノロジまたは API は何ですか?コード)?
実行するコードが Javascript ではなく C# スニペットである場合、それは簡単ですか、それとも難しいですか?
私のコードに異常な権限を持たせる必要のないテクニックはありますか? たとえば、require のようなメソッド(これ
CodeCompiler.FromSource
はSecurityPermissionFlag.UnmanagedCode
過剰に思えます。コードをコンパイルするのがなぜそれほど危険なのかわかりません)。クライアント側のコードだけでなくサーバー側のコードも制御する場合は、そのようなスクリプト フラグメントをクライアントではなくサーバー上でコンパイルし、それをプリコンパイル済みコードとしてクライアント側に送信して実行することも検討できます。そのようなコード (おそらく dotNet アセンブリ) をネットワーク経由でクライアントに送信し、クライアント側のコードにネットワークからクライアント側の RAM にそれを受信させ、それをクライアント側で呼び出す方法はありますか?クライアント側のディスク ドライブ上のファイル?
編集
最初の 3 つの質問に対する答えがあります。理由がわかりません。おそらく (これはあまり説得力のある理由ではないと思いますが) コンパイラがアンマネージ コードを使用して実装されているためです。おそらく「C#バージョン5」の時間枠で、マネージコードを使用してコンパイラを再実装すると、これが変更される可能性があります。いずれにせよ、理由が何であれ、それが現状のようであり、回避策はありません (他の同様の API ですが、必要な権限が少なくて済みます)。
私の残りの質問は、Assembly インスタンスをあるマシンから別のマシンに取得する方法です。Assembly.Load(byte[] rawAssembly)
時間があれば、信頼できないコードがメソッドを実行できるかどうかを調べます。
c# - CodeDom でコンパイルされたアセンブリをアンロードする
いくつかの C# コード (「スクリプト」と呼びましょう) があり、実行時にコンパイルしています。その関数にアクセスするために使用するメイン プログラムのインターフェイスを使用します。コンパイルが完了したらCompilerResults.CompiledAssembly
、その場合はできCreateInstance(Type)
ます。
スクリプトの使用が完了したら、完全にアンロードしたいと思います。私が理解していることから、別のアプリ ドメインを作成する場合にのみこれを行うことができます: 別の AppDomain への DLL の読み込み
私の実装に固有の質問がいくつかありました。
- コンパイルするスクリプトが複数あり、それらを個別にアンロードしたい場合、それぞれに個別のアプリ ドメインを作成する必要がありますか?
- どのアプリ ドメイン名を使用すればよいですか? GUID は良い考えでしょうか? 競合する可能性のある避けるべき名前はありますか?
- アセンブリが別のアプリ ドメインにある場合、メイン プログラムのインターフェイスへのアクセスに問題はありますか? 私は現在、
ReferencedAssemblies.Add(typeof(Interface).Assembly.Location)
コンパイルする前にやっています。 - を使用できますか
CompilerParameters GenerateInMemory=true
、それともどこかに保存する必要がありますか?
c# - System.Reflection.Emit.AssemblyBuilder インスタンスからの System.CodeDom.CodeCompileUnit
TLBImp2 の CodePlex コードを調べていて、出力された IL から C# ソース コードを生成したいと考えています。
System.Reflection.Emit.AssemblyBuilder インスタンスから System.CodeDom.CodeCompileUnit を取得する方法はありますか?
c# - プログラムでC#コードを解析および変更する方法
私がやりたいのは、C#コードを読み取り、解析し、いくつかのメソッド呼び出しを挿入して、最後にコンパイルすることです。
C#ソースコード(文字列のリスト)をCodeDOMオブジェクトに変換することは可能ですか?
asp.net - BuildProvider をテストする方法
出発点として単純な BuildProvider を作成しましたが、エラーは発生しませんが、生成されたクラスにもアクセスできません。実際、BuildProvider が呼び出されたかどうかはわかりません。BuildProvider をデバッグする方法はありますか? CodeDom に問題があるのか、それとも別の問題なのかを知るにはどうすればよいですか?
ありがとう!
c# - 生成された .NET アセンブリを、それを生成したアプリケーション内からデバッグする
要するに、生成プログラムのデバッグ セッション中に生成されたコードをどのようにデバッグできますか? (以下のコードを参照)
次の問題に直面しています: 動的に生成/コンパイルされたコードを、それを生成するアプリケーションからデバッグしたいと考えています。それを明確にするために、過度に単純化された例を提供しました。この例はデバッグを必要としません! 私の実際のアプリは、デバッグを本当に正当化するより多くの行とコードを生成します。私を信じてください:-) デバッグする方法または にブレークポイントを配置する方法があるかどうか知りたいですHelloWorld
。InvokeMethod 呼び出しにステップインしても機能しません。おそらく解決策には、生成されたアセンブリへの呼び出しサイトでのコード変更が含まれます。
私はすでに多くの質問を見てきました (たとえば、Visual Studio .NET で動的に読み込まれたアセンブリをデバッグする) が、問題の解決に役立つものはありませんでした (解決できる場合)。
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=118からコードをベースとして取得し、廃止された呼び出しを修正しました。これに加えて、メモリ内でオンザフライでアセンブリを生成しましたが、呼び出しはうまく機能しています。デバッグ情報を含むアセンブリを明示的に生成しましたが、希望が持てます: デバッグが不可能な場合、なぜオプションがあるのでしょうか?