問題タブ [csharpcodeprovider]
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# - 別のアセンブリからアイコンを使用して実行可能ファイルを作成する
実行可能ファイルからアイコンを取得し、このアイコンを使用する新しい実行可能ファイルを ( CSharpCodeProviderを使用して) 作成する方法を探しています。
最初の部分は簡単です。
アイコンを「添付」したいときに問題が発生します。私は使用してみました:
しかし、この解決策ではアイコンをファイルに書き込む必要があり、それを避けたいと思います (理由の 1 つは、16 色を超えるアイコンを保存するのが非常に面倒なことです...)。
メモリ内の System.Drawing.Icon オブジェクトを直接使用することは可能ですか?
編集: 明確にするために、C# コードを実行可能ファイルにコンパイルできるコードを取得しようとしています。この実行可能ファイルには、(Icon オブジェクトとして) メモリにのみ保持され、ファイルには (.ico ファイルとして) 保持されないアイコンがあります。
entity-framework - CSharpCodeProvider を使用して DbContext を生成する
以下のコードを使用して、実行時に OnlineShopContext を生成します
生成されたアセンブリは:(ILSpyを使用)
}
インスタンスを作成して FirstOrDeafult や Where などのクエリを実行したい場合、これらのメソッドは存在しません。しかし、奇妙なデータ型の不一致のために実行されないFindメソッドがあります
どうすればできますか?インスタンスを型にキャストし、強く型を操作して Where または FirstOrDefault でデータを取得するにはどうすればよいですか
c# - 参照アセンブリの再配布
CSharpCodeProvider を使用してオンザフライでコードを生成およびコンパイルするアプリケーションがあります。コンパイルされるコードは Entityframework を使用するため、Entityframework.dll への参照をコンパイラに渡します。アプリケーションと共に再配布する Entityframework.dll は、.net 4.0 用に構築されたものです。また、System.ComponenModel.DataAnnotations.dll への参照をコンパイラに渡します。これは、GAC で見つかった dll への参照です。
.net 4.0 でアプリケーションを実行すると、これらすべてが正常に機能します。ただし、.net 4.0 の Entityframework にあった一部の属性が .net 4.5 の System.ComponenModel.DataAnnotations に移動されたため、.net 4.5 で実行すると問題が発生します。したがって、次のようなエラーが発生します。
メッセージ = エラー (CS0246): 型または名前空間名 'Column' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?) - ファイル: c:\Generated\DataContext\0rs2sztj.2.cs:14 エラー(CS0433): タイプ 'System.ComponentModel.DataAnnotations.Schema.ColumnAttribute' は両方の 'c:\Users\Steven Segers\AppData\Local\Temp\Temporary ASP.NET Files\vs\69fafaea\17b01629\assembly\dl3 に存在します\95fc97d4\5bdae37d_7c05d101\EntityFramework.DLL' および 'c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll' - ファイル: c :\Generated\DataContext\0rs2sztj.2.cs:14
私が見る限り、これには2つの方法があります。
- .net 4.0 の System.ComponenModel.DataAnnotations の参照アセンブリをコンパイラに渡します。ここでの問題は、この参照アセンブリがターゲット マシンに存在する必要があることです。これに対応するには、顧客にサーバーに Windows SDK をインストールするよう要求するか、参照アセンブリをアプリケーションと共に配布する必要があります。前者はかなり望ましくない要件だと思います。後者が許可されているかどうかはわかりません。
- ランタイム .net バージョンを対象とする Entityframework.dll をコンパイラに渡すようにしてください。これを達成するための最良の方法が何であるかはわかりません。
c# - C# ライブラリ管理コンソール プログラム
このコードでは、2 本を追加して 1 冊目と 2 冊目を削除しようとすると、1 冊目は削除され、2 冊目は削除されません。次のケースでは、3 本を追加して 1 つずつ削除すると、1 は削除され、2 は削除されず、2 を削除すると 3 番目の本が失われます。4 本を追加すると、2 と 4 は削除されません。
私のコード (私は研修生なので C# の初心者です)
c# - CSharpCodeProvider を使用して変数値を設定する
を使用して一度コンパイルされるコードに変数値を渡す方法があるかどうか疑問に思っていましたCSharpCodeProvider
。
例えば :
";
コンパイル方法:
Value
だから私は例の値を渡すことができるようにしたい2
そして、私が意味したのONE TIME
はcompile time
、コンパイルされたコードが実行時に2
常に値を表示するように、アプリケーションを実行するたびに.
私はそれが明確であることを願っています!
c# - ランタイム コンパイル済みアセンブリを他のランタイム コンパイル済みアセンブリで参照する
C# .NET 4.6 で実行時にコンパイルされるオブジェクトによって参照される実行時にコードをコンパイルしようとしています。
CSharpCodeProvider を使用してメモリ内に CompilerResult を生成しています。結果のアセンブリは、コンパイルされる 2 番目のコード フラグメントで参照されます。2 番目の部分をコンパイルする前に、AssemblyReference を CompilerParameters に追加することは可能ですか (そうしないと、アセンブリ コンパイラの欠落エラーが発生します)。
現在、次の 2 つのオプションがあります。
- ディスク上に最初のアセンブリを作成し、CompilerParameters.ReferencedAssemblies.Add を使用します (ただし、不要なディスク操作は好きではありません)。
- 1枚目は一切生成せず、2枚目にコードを貼り付ける(ただし、同じコードを何度も貼り付けるのは苦手)
私の質問:別のランタイム生成アセンブリでランタイム生成アセンブリを参照するメモリ内の方法はありますか?
c# - 実行時に DLL アセンブリを生成して変更しますか?
PersonVM
以下に示すような名前のクラスを含むdllを作成しました。そしてその働き...
しかし、このコードはインデックス コントローラーで 1 回だけ機能します。たとえば、ここで私のdllクラスを変更していません:
エラーについては何もありません..それは私のdllクラスを変更しないだけです... dllクラスPersonVM
には、私が初めて設定したプロパティが含まれているだけですIndex
c# - CSharpCodeProvider が mvc アプリケーションをフリーズさせる
実行時にいくつかの Dll ファイルを作成する必要があります。Dll は生成されていますが、このコードが実行された後に mvc アプリケーションがフリーズするようです。出力ウィンドウで、すべての Dll がアンロードされ、その後すべてがロードされていることがわかります。私は何を間違っていますか?
私のコード:
私の出力:
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131239474882606992): アンロードされた 'C:\Windows\Microsoft.Net\assembly\GAC_32\System.Web\v4.0_4.0.0. 0__b03f5f7f11d50a3a\System.Web.dll'
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131239474882606992): アンロードされた 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\ System.dll'
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-131239474882606992): アンロードされた 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0. 0__b77a5c561934e089\System.Core.dll'
(等)
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-2-131239476152101487): ロードされた 'C:\Windows\Microsoft.Net\assembly\GAC_32\System.Web\v4.0_4.0.0. 0__b03f5f7f11d50a3a\System.Web.dll'. シンボルの読み込みをスキップしました。モジュールは最適化され、デバッガー オプション 'Just My Code' が有効になっています。
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-2-131239476152101487): ロードされた 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\ System.dll'. シンボルの読み込みをスキップしました。モジュールは最適化され、デバッガー オプション 'Just My Code' が有効になっています。
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-2-131239476152101487): ロードされた 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0. 0__b77a5c561934e089\System.Core.dll'. シンボルの読み込みをスキップしました。モジュールは最適化され、デバッガー オプション 'Just My Code' が有効になっています。
(等)
reference - CSharpCodeProvider 現在のアセンブリを参照する方法
CSharpCodeProvider を使用してコードを動的にコンパイルしようとしています。参照されているアセンブリでは、ここで提案されているように、typeof(Program).Assembly.CodeBase) の参照パラメーターを追加していますが、機能しません。まだエラーが表示されます
その名前のファイルは存在します - 唯一の違いは、ファイル エクスプ ローラー (".dll") でファイル拡張子が小文字で表示されることですが、それ以外の場合、エラー メッセージのファイル名は、参照したい dll の名前とパスと一致します。
この場合、コンパイラが参照されている dll を認識できない理由は何ですか?
私のコードの関連セクションは次のとおりです。