問題タブ [clr]
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# - 静的インデクサーは C# でサポートされていませんか?
色々と試してみましたが、出来ないという結論に至りました。これは、私が過去に他の言語から楽しんできた言語機能です。それは私がただ書き留めるべきものですか?
.net - Silverlight メモリ プロファイラーは存在しますか?
CLR プロファイラーは、Silverlight CLR では機能しないようです。別のメモリ プロファイラーは存在しますか?
c# - ASPXページのコンパイルが失敗する
管理者がプラグインをアップロードできるようにするWebベースのアプリケーションを開発しています。すべてのプラグインは、アプリルートの外部の特別なフォルダー(C:\ Pluginsなど)に保存され、Assembly.LoadFrom()を介して動的にロードされます。これはほとんどの場合問題なく機能します。プラグインのWebControlはインスタンス化されて読み込まれ、カスタムクラスは期待どおりに機能します。
カスタムVirtualPathProviderを使用して、これらのプラグインからリソースを取得しています。したがって、埋め込みASPXファイルを取得するには、「/ MySite / embeddedResource /?Assembly = MyPlugin&Resource=MyPage.aspx」のようにします。そして、それも問題なく機能します。埋め込まれたASPXファイルはコンパイルされ、通常のページのように提供されます。
ただし、問題は、埋め込まれた.aspxファイル(動的にロードされたプラグイン内)が同じプラグインアセンブリ内のクラスを参照する場合に発生します。「タイプまたはアセンブリMyPluginが見つかりません」などのコンパイルエラーが発生します。これは奇妙なことです。明らかに、MyPluginから.aspxファイルを引き出しているからです。それで、どうしてそれを見つけることができないのでしょうか?
だから、私はあなたがこれで私を助けることができることを願っています。プラグインは次のようになります。
MyPlugin.dll:
- InternalHelperClass.cs
- MyPage.aspx(.csファイルのないリソース)
MyPage.aspxに「<%= InternalHelperClass.WriteHelloWorld()%>」のようなものが含まれている場合、コンパイルは失敗します。
どうすればこれを機能させることができますか?
アップデート:
完全修飾名を使用してみました。変わりはない。ステップスルーすることは不可能です-aspxページに移動するとコンパイルエラーになります。この場合、名前空間は問題になりません(外部プラグインdllからのものであるため)
UPDATE2:
ジョエル、あなたは何かに夢中だと思います。残念ながら、これらのアセンブリを含めるようにweb.configを編集することは、設計の一部ではありません。基本的に、プラグインは完全に動的である必要があります。プラグインをフォルダーにドロップし、アプリを再起動して、準備を整えます。
garbage-collection - サーバーまたはワークステーション GC の設定
CLR のガベージ コレクションのサーバーまたはワークステーションのいずれかを使用するように、アプリケーションまたはマシン全体を構成するにはどうすればよいですか?
c# - アプリケーションが作成したアプリケーション ドメインのリストを取得するにはどうすればよいですか?
長時間実行されるタスクの使用中に AppDomain を作成するサービス アプリがあります。一意の ID を持つ Hashtable に格納することで、これらを追跡してきました。
タスクが完了すると、サービス アプリはそのタスクに割り当てられた AppDomain をアンロードし、appdomain Hashtable から削除します。
純粋にサニティ チェックの観点から、CLR にクエリを実行して、作成中のアプリ ドメインによってまだ読み込まれているアプリ ドメインを確認する方法はありますか (つまり、トラッキング ハッシュテーブルを CLR が実際に見ているものと比較できます)。
.net - .NETメモリ管理は、ネイティブコードよりもマネージコードの方が高速ですか?
マネージコードの方がネイティブコードよりもメモリ割り当てが速いかどうかは明らかだと思いましたが、いくつかの論争があるようです。おそらく、OSへのコンテキスト交換呼び出しがないため、仮想マシンでのメモリ管理は高速ですが、VM自体がOSを定期的に呼び出してメモリを増やす必要があり、メモリ自体の管理オーバーヘッドがあります。 OSではなく。
私のように根拠のない主張をするのではなく、あなたの立場を裏付ける参考文献へのリンクを提供してください。
c++ - C ++CLIはC++のスーパーセットですか?
C ++ CLIコンパイラは、変更なしでC ++クラスのいくつかの大きなセットをコンパイルできますか?
C ++CLIはC++のスーパーセットですか?
sql-server - SQL Server - CLR 統合を使用して Web サービスを利用する
Web 上には、SQL Server 2005 の CLR 統合を使用して Web サービスを使用する方法を説明するチュートリアルがいくつかあります。ほとんどの場合、プロセスはかなり複雑に見えます。データベースの信頼レベルを変更する必要があることや、sgen ツールを使用して静的な XmlSerializer アセンブリを作成することなど、いくつかの問題に遭遇しました。そして、私はまだそれを正しく機能させていません... (私はそれにもう少し時間とエネルギーを注ぐ必要があると確信しています)
このタイプのアーキテクチャに移行する場合、セキュリティ、パフォーマンス、およびメンテナンスにどのような影響がありますか? これはおそらくかなり頻繁に使用されるプロセスであり、メンテナンスの容易さは比較的重要です。
これを UDF として SQL Server に統合するか、コンソール/Web アプリケーション用のスタンドアロン .NET ライブラリにするかを自由に選択できます。SQL CLR と外部アセンブリとの統合は、問題を起こす価値がありますか?
.net - .NET のクラス ローダーに相当するもの
.NET で「Java カスタム クラス ローダー」に相当するものを定義できるかどうかは誰にもわかりませんか?
少し背景を説明するには:
「Liberty」と呼ばれる、CLR を対象とする新しいプログラミング言語を開発中です。この言語の機能の 1 つは、「型コンストラクター」を定義する機能です。これは、コンパイル時にコンパイラーによって実行され、出力として型を生成するメソッドです。それらはジェネリックの一種の一般化であり (言語には通常のジェネリックが含まれています)、次のようなコードを ("Liberty" 構文で) 記述できます。
「タプル」は次のように定義されています。
この特定の例では、型コンストラクターtuple
は、VB および C# の匿名型に似たものを提供します。
ただし、匿名型とは異なり、「タプル」には名前があり、パブリック メソッド シグネチャ内で使用できます。
これは、最終的にコンパイラによって出力される型を複数のアセンブリ間で共有できるようにする方法が必要であることを意味します。たとえば、私はしたいです
tuple<x as int>
tuple<x as int>
アセンブリ A で定義され、最終的にアセンブリ B で定義されたものと同じ型になります。
もちろん、これの問題は、アセンブリ A とアセンブリ B が異なる時間にコンパイルされることです。つまり、どちらも、タプル型の互換性のない独自のバージョンを発行することになります。
これを行うためにある種の「型消去」を使用することを検討したため、次のような型の束を持つ共有ライブラリが作成されます (これは「Liberty」構文です)。
次に、i、j、および k タプル フィールドからのアクセスを 、 、および にリダイレクトField1
しField2
ますField3
。
ただし、それは実際には実行可能なオプションではありません。これは、コンパイル時tuple<x as int>
にtuple<y as int>
は と が異なる型になることを意味しますが、実行時には同じ型として扱われます。これは、等価性や型の同一性などに多くの問題を引き起こします。それは私の好みにはあまりにも抽象的すぎます。
他の可能なオプションは、「ステート バッグ オブジェクト」を使用することです。ただし、状態バッグを使用すると、言語で「型コンストラクター」をサポートするという目的全体が無効になります。「カスタム言語拡張機能」を有効にして、コンパイラが静的な型チェックを実行できるコンパイル時に新しい型を生成できるようにするという考え方があります。
Java では、カスタム クラス ローダーを使用してこれを行うことができます。基本的に、タプル型を使用するコードは、実際にディスク上で型を定義しなくても発行できます。次に、実行時にタプル型を動的に生成するカスタム「クラス ローダー」を定義できます。これにより、コンパイラ内で静的な型チェックが可能になり、コンパイルの境界を越えてタプル型が統一されます。
ただし、残念ながら、CLR はカスタム クラスの読み込みをサポートしていません。CLR でのすべての読み込みは、アセンブリ レベルで行われます。「構築された型」ごとに個別のアセンブリを定義することは可能ですが、それはすぐにパフォーマンスの問題につながります (型が 1 つしかないアセンブリが多数あると、リソースが多すぎます)。
だから、私が知りたいのは:
.NET で Java クラス ローダーのようなものをシミュレートして、存在しない型への参照を発行し、それを使用する必要があるコードを実行する前に、実行時にその型への参照を動的に生成することはできますか?
ノート:
*実際には、質問への回答は既に知っています。以下に回答として提供します。ただし、解決策を見つけるために、約 3 日間の調査と、かなりの IL ハッキングが必要でした。他の誰かが同じ問題に遭遇した場合に備えて、ここに文書化することをお勧めします. *
c# - C#/CLI 識別子の最大長は?
名前には他にどのような制限がありますか (スコープ内での明らかな一意性以外に)?
それらはどこで定義されていますか?