問題タブ [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 と文字列の処理
私はこれについて調査しましたが、確かなものを見つけることができず、誰かが私を正しい方向に向けることができるかどうかを見たいと思っていました. 言語ごとに条件付き文字列を設定せずに、Codedom が異なる言語間の文字列と連結を処理できるかどうかを確認しようとしています。
たとえば、C# と VB.NET の両方で Codedom を使用して、以下に示すように正確に次のコードを生成する必要があります。
C#
VB.NET
CodeMethodInvokeExpression
forerrorMsg.Replace
とSystem.Windows.Browser.HtmlPage.Window.Eval
は十分に単純ですが、Codedom が自動的に処理できるかどうかわからないのは、その中の文字列です。
c# - Codedom を介して「ハンドル」を実装する方法
Codedom を使用してメソッドにハンドラーを追加する方法を見つけようとしていますが、あまり進んでいません。
Codedomを介して再現したい方法は次のとおりです。
このメソッドは、次のように簡単に作成できます。
しかし、を追加する方法がわかりませんHandles btnStart.Click
。を見てきましたCodeAttachEventStatement
が、これはメソッドで実行できるとは思いませんHandles
。
これを達成する方法を知っている人はいますか?
編集: 以下のソリューションは VB では機能しますが、C# では機能しません。これは、ハンドラーがメソッドではなくイベントを処理しようとしているためです。
.net - CodeDOM を使用して、AppDomain でアセンブリを作成して読み込むにはどうすればよいですか?
CodeDOM を使用して、ユーザー定義の式を評価し、クラスのアセンブリを作成し、アセンブリを読み込むクラスを作成するプロジェクトに取り組んでいます。かなりの数のユーザー定義式が存在する可能性があるため、最初に AppDomain を作成し、その AppDomain 内のアセンブリに対して CodeDOM の作成/読み込みと実行を実行してから、AppDomain をアンロードします。
かなり検索したところ、既存のアセンブリを AppDomain に読み込む方法の例がたくさん見つかりましたが、AppDomain内からアセンブリを作成する方法を示す例が見つからないようです。
この例 ( DynamicCode ) は CodeDOM を使用してアセンブリを作成し、それを AppDomain に読み込みますが、作成者はアセンブリをディスクに生成しています。生成されたアセンブリのクリーンアップを管理する必要がないように、アセンブリをメモリ内に生成することをお勧めします。(ただし、一時フォルダーに .dll が作成されます)。
誰かがこれを行う方法の例を教えてもらえますか?
どんな助けでも大歓迎です。
私のコードからの抜粋をいくつか含めました。
これらのコード スニペットは、私のプロジェクトの基本的な機能を示していると思います。あとは、それを独自の AppDomain にラップするだけです。
c# - 「CSharpCodeProvider.Parse」の代替
の代替品を探していCSharpCodeProvider.Parse
ます。CompileUnit
このメソッドは、[C#] コード ソースを解析し、オブジェクトを返すことになっていました。ただし、このメソッドはどの .Net フレームワークにも実装されていません。
私の目的は、コンパイルせずに C# CodeDOM をナビゲートできるようにすることです。コード分析を行うアプリケーションを作成していますが、必ずしもすべての外部参照があるとは限りません。つまり、コンパイルできません。
c# - C#コードを生成するには?
デスクトップアプリケーションを書いています。クライアント マシンで C# コードを生成する必要があります。
CodeDOM (複雑) または単純な文字列操作 (壊れやすい) を使用することを考えました。ほかに何か?おすすめの方法は?
c# - CompileAssemblyFromDom (CodeDom コンパイラ) は、Visual Studio とは異なる方法で行番号を生成します
CodeDOM を使用してアセンブリを生成およびコンパイルしています。生成されたコードがコンパイルされない場合、CompileAssemblyFromDom メソッドは、Visual Studio が生成するものとは異なる行番号を生成することがわかりました。
たとえば、コード プロバイダーで GenerateCodeFromCompileUnit を呼び出し、生成されたコードを Visual Studio に取り込んでコンパイルしようとすると、各エラーの行番号はコードの行に直接関連付けられますが、CompilerResults オブジェクトで返される行番号はCompileAssemblyFromDom メソッドは、生成されたコードの同じ行に直接関連付けられません。
私はコードを動的にコンパイルしているため、私にとっては問題であることが証明されています。エラーがある場合は、コードを表示し、問題の行をユーザーに強調表示したいと考えています。誰かがこの同じ問題に遭遇しましたか?
編集: CodeDom プロバイダーによって行番号を報告するときに、コメントである行全体が行としてカウントされないためだと思いますが、Visual Studio ではそうです。CodeDom プロバイダーによる行番号の計算を変更して、コメント行を含める方法はありますか?
.net - .NET 4.0 アプリケーションからの CSharpCodeProvider 出力 .NET 2.0 アセンブリ
CSharpCodeProvider を使用して、CodeDom オブジェクトをアセンブリにコンパイルしています。アプリケーション自体は .NET 4.0 で実行されています。ただし、一部の外部リソースとの互換性のために、.NET 2.0 に対してビルドするには、CompileAssemblyFromDom からの出力が必要です。CSharpCodeProvider に .NET 2.0 に対してビルドするように指示するにはどうすればよいですか?
c# - 生成されたC#クラス名を変更する
ManagementClass.GetStronglyTypedClassCodeを使用して、CodeTypeDeclarationインスタンスへの参照を取得しています。生成されたクラス名を変更したいのですが、このメソッドではこれを許可していません(私が知る限り)。CodeTypeDeclaration.Nameプロパティを変更しようとしましたが、コンストラクター名などは変更されないため、C#コンパイラはクラスのコンパイル時にエラーを返します。クラスで簡単な検索/置換を行うことはできますが、これは信頼できないようです。CodeTypeDeclarationインスタンスで表されるC#クラスの名前を確実に変更する方法はありますか?
コードはそれほど多くありませんが、関連するスニペットは次のとおりです(PowerShellを使用しています)。
c# - このダウンロード コードを CodeDOM に変換するにはどうすればよいですか?
コードダムの使用は初めてです。
このコードを C# で実行できるように変換する方法を教えてもらえますか?
コード:
c# - CodeDomを使用して、名前だけでなく値も含む列挙型を生成します
私はこの小さなコードを持っています:
いいですね、列挙型を取得します:public enum eShape {Round、Square、}
しかし、名前に加えて値を設定することも可能でしょうか?のように: