問題タブ [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.compilerメモリ
実行時にアセンブリを生成しています。問題は、私がそれを使い終わった後、それを取り除くことができないということです。私が作成したものをこのように破壊する必要があります
asp.net-mvc - F#Asp.NetCodeDomProviderOptionsの問題
IIS 7でF#を使用してASP.NETMVCアプリケーションを作成しています。
ブラウザから実行しようとすると、次の内容を含むYSODが表示されます。
[ArgumentNullException:値をnullにすることはできません。パラメータ名:dictionary]
System.Collections.Generic.Dictionary2..ctor(IDictionary
2辞書、IEqualityComparer`1比較子)+12700827
System.Web.Compilation.CompilationUtil.CreateCodeDomProviderWithPropertyOptions(Type codeDomProviderType)+84
System.Web.Compilation.CompilationUtil.CreateCodeDomProviderNonPublic(Type codeDomProviderType) +16
System.Web.Compilation.AssemblyBuilder..ctor(CompilationSection compConfig、ICollectionreferencedAssemblies、CompilerTypecompilerType、String outputAssemblyName)+469
System.Web.Compilation.CompilerType.CreateAssemblyBuilder(CompilationSection compConfig、ICollectionreferencedAssemblies、StringgeneratedFilesDir、String outputAssemblyName)+ 127
System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()+675 System.Web.Compilation.BuildProvidersCompiler.PerformBuild()+46 System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp)+11321455
System.Web.Compilation.BuildManager.CompileGlobalAsax ()+50 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()+872
Reflectorを使用してメソッドを調べ、それ以上のコンテキストが得られるかどうかを確認したところ、最初の行で失敗していることがわかりました。
Web.configでF#CodeDomに指定したpropertyOptionsが正しくないと思います。ただし、それらを削除すると、同じエラーが発生します。
このエラーを修正するためのアイデアはありますか?
c# - 動的コード生成
私は現在、ソースコードを書かずに「プログラム」を作成できるアプリケーションを開発しています。必要に応じて、クリックして再生するだけです。
ここでの問題は、データ モデルから実行可能プログラムをどのように生成するかです。多くの可能性がありますが、どれが私に最適かはわかりません。クラスと名前空間、およびアプリケーションの一部になる可能性のあるすべてのものを含むアセンブリを生成する必要があります。
CodeDOM クラス: このクラスには多くの制限とバグがあると聞きました。メソッドのパラメーターと戻り値に属性を作成する必要があります。これはサポートされていますか?
プログラムで C# ソース コードを作成し、それに対して CompileAssemblyFromFile を呼び出します。必要なコードを生成でき、C# はほとんどの CLR 機能をサポートしているため、これは機能します。しかし、これは遅くありませんか?
リフレクション ILGenerator クラスを使用します。これを使用すると、考えられるすべての .NET コードを生成できると思います。しかし、これは他のアプローチよりもはるかに複雑でエラーが発生しやすいと思いますか?
他に考えられる解決策はありますか?
編集: このツールは、アプリケーションを開発するための一般的なものであり、特定のドメインに限定されません。それがビジュアルプログラミング言語と見なされるかどうかはわかりません。ユーザーは、クラス、メソッド、メソッド呼び出し、あらゆる種類の式を作成できます。実際のプログラミング言語で許可されているほとんどのことを実行できるはずなので、それほど制限はありません。現時点では、まだ多くのことをユーザーがテキストとして記述しなければなりませんが、最終的な目標は、ほぼすべてをまとめてクリックできるようにすることです。
vb.net - CodeDom を使用した VB.NET 部分メソッドの回避策は?
CodeDom が部分メソッドをサポートしていないことは知っていますが、回避策はありますか? C#の回避策を見つけましたが、VB.NET の回避策が必要です。ありがとう。
c# - ソースコードを読んでオブジェクトを構築することは可能ですか?
バックグラウンド
ビルド プロセスの一部として実行されるスクリプトがいくつかあります。これらのスクリプトは、さまざまなソース コード ファイルを調べて、追加のソース コードを生成します。
スクリプトは CodeDom を使用してスクリプトを生成し.cs
、単純なテキスト リーダーを使用してファイルを読み取ります。
質問
スクリプトの 1 つは、呼び出された特定のクラス属性の使用を探してPageMenuItem
おり、その目的は、ページ メニュー項目の静的リストを作成することです。
.cs
すべてのファイルを読み取って"PageMenuItem"
属性を探し、引数の数を数え、どのコンストラクターが使用されているかを把握して、さまざまな情報を引き離すことで、これを実行します。
さまざまなパラメーターを持つ 7 つのコンストラクターがあるため、ソース コードからどのコンストラクターが使用されているかを判断し、情報を解析する方法をPageMenuItem
判断することが非常に難しくなっています。.cs
PageMenuItem
自分でテキストを解析しようとする代わりに、単純にメモリ内にオブジェクトを構築してから、そのプロパティを使用したいと考えています。
そのため、ファイルから属性宣言を取得し、そこから.cs
新しいインスタンスを構築する方法が必要PageMenuItem
です。
それは可能ですか?
この質問の別の言い方:
次の文字列を指定します。
そのオブジェクトを操作できるように、そのタイプのオブジェクトを作成するにはどうすればよいMyAttribute
ですか? を定義するソース コードに完全にアクセスできますMyAttribute
。
c# - Visual Basic.NET と C# の名前空間の違いとその対処方法
C# でこれを行うと、次のようにコンパイルされます。
ただし、VB.NET で同じことを試みると、次のようにはなりません。
("Test" の使用方法によっては) 「'Name' は '<Default>' のメンバーではありません」というメッセージが表示されます。または「タイプ 'Name.Test' が定義されていません。」私のエラーリストに。私はそれを機能させる 2 つの方法を見つけましたが、どちらもユーザーに期待するのは合理的ではありません。1 つは、プロジェクト プロパティから「ルート名前空間」を削除することです。もう 1 つは、"Global" と "Name" の間にその名前空間を含めることです。
CodeDom を使用して C# と VB.NET の両方のコードを生成するカスタム ツールを作成しました。これが、上記の 2 つの修正のいずれも実行できない理由です。ユーザーが空のルート名前空間を持つことを期待することはできません。また、コード生成で VB 固有のトリックを実行する必要はありません (一種の言語に中立なツールを使用する目的ではないでしょうか?) 「ルート名前空間」を選択し (頭のてっぺんからどのように知っているわけではありません)、それをコード生成に含めるなどです。
グローバル修飾子も除外したくありません。生成された出力に不適切な名前を選択するユーザーからツールを保護するためです。これにどう対処すべきかについて誰か提案がありますか?
security - codedom コンパイル済みアセンブリの制限
私は自分のアプリ用のプラグイン マネージャーを作成しました。codedom を使用して C# コードをクラス ライブラリにコンパイルし、その型をインスタンス化します。それは完全に機能し、コンパイルされたアセンブリのアクセス許可を制限したいと思います。残念ながら、その方法がわかりません。私が理解している限り、何らかの方法で CompilerParameters.Evidence を使用する必要がありますが、その方法は不明です。明確にするために、アセンブリを特定のゾーンとして単純に分類したくありません。プラグイン マネージャー コンストラクターで引数として渡されるアクセス許可セットに制限したいと考えています。また、アセンブリを新しい appdomin にロードしないことにも言及したいと思います。アセンブリは、アプリケーションの残りの部分と同じドメインで実行されます。
ありがとう。
asp.net - CodeDom で生成された .asmx ファイルに ASP.net Web サービス ディレクティブを追加する方法
どうすれば追加できますか
CodeDom で生成された .asmx ファイルの先頭に?
この質問をもう少し埋めるためのコードを次に示します。
.net - CodeDom プロバイダーを持つ .NET プログラミング言語はどれですか?
C#、VB.NET、C++ (マネージおよび C++/CLI)、F# の他に、独自の CodeDom プロバイダーを持つ .NET プログラミング言語はどれですか?
c# - Codedom で C# 自動プロパティを生成する
Codedomまたは使用できるライブラリの他のセットでC# 自動プロパティを生成する方法はありますか?