問題タブ [clr-hosting]

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.

0 投票する
3 に答える
12415 参照

.net - CLRホスティングとは何ですか?

CLRホスティングとは何ですか?そのユースケースは何ですか?

0 投票する
1 に答える
842 参照

c++ - Azure とネイティブ コード

Azure でネイティブ コードをホストできるようです: http://msdn.microsoft.com/en-us/library/dd573362.aspx。ここでソケット サーバー (tcp/udp をリッスン) を実行できますか? そして、上に CLR をホストすることさえありますか?

0 投票する
1 に答える
240 参照

wpf - スタックオーバーフロー エラーのため、Clr 4.0 セルフ ホスティング アプリケーションで WPF UserControl を作成できません

Delphi コントロール内で WPF コントロールを作成およびホストできる Delphi win32 アプリケーションで CLR 2.0 をホストすることができました。これは、WinForms アプリケーションの ElementHost に似ています。

ここで、ソリューションを CLR 4.0 に移行したいと考えています。関連付けられた Xaml リソースを持つ UserControl を作成しようとする場合を除いて、すべて正常に動作します。その場合、スタック オーバーフロー エラーが発生し、プロセスが強制的に終了されます。しかし、(xaml を読み取らずに) コードで WPF コントロールを作成すると、すべて正常に動作します。

XamlReader.LoadBamlメソッドに入るまでフレームワーク コードにステップ インすることができましたが、次のコードを実行した直後にクラッシュしました。

読み込まれたアセンブリも CLR4 を使用することに注意してください。

ご協力いただきありがとうございます、

モーガン

0 投票する
2 に答える
5031 参照

c# - .NET アセンブリ参照を別の名前に解決していますか?

私のプロジェクトはLibrary1.dllLibrary2.dllを参照しています。 Library2.dllはLibrary1.dllに依存していますが、別の名前Library1.Net40.dllで参照するようにコンパイルされています。

Library1.Net40.dllのすべての参照をリダイレクトしてLibrary1.dllに解決するようにアプリケーションに指示する良い方法はありますか? <bindingRedirect> を使用してバージョンをリダイレクトする方法に似たものでしょうか?

AppDomain.AssemblyResolveイベントを処理するソリューションがありますが、これはちょっとしたハックであり、これを行うためのより良い方法があることを望んでいます。

編集:誰かの参考のために、AppDomain.AssemblyResolveイベントを使用して別のアセンブリにリダイレクトすることで解決した方法を次に示します。

0 投票する
2 に答える
4724 参照

.net - XP で実行中のアプリケーションによって読み込まれる .NET CLR のバージョンを確認する方法は?

コンピューター上の explorer.exe によって読み込まれるマネージ シェル拡張機能があることを知っています。explorer.exe にロードされている CLR のバージョンを知りたいです。Vista または Win7 を実行している場合は、Process Explorerを使用して、explorer.exe のプロパティの [.NET アセンブリ] タブを確認できます。ただし、これは XP では機能しません。XPでこの情報を取得する方法はありますか?

0 投票する
2 に答える
847 参照

.net - 特定のクラスで割り当てることができるメモリを制限するにはどうすればよいですか?

実行時にいくつかの外部アセンブリをアプリケーションにロードしています。また、各外部アセンブリで定義されている特定のクラスで使用できるメモリの量を制限する必要があります。たとえば、インスタンスあたり10 mbです。そうしないと、OutOfMemoryが発生します。

私はこれを行うための最良の方法をグーグルで検索し、CLRランタイムホスティングに関するいくつかの情報を見つけました。それは私が必要としているもののようですが、良い例を見つけることができません。

誰かがコードの例やCLRランタイムホスティングを使用したメモリ管理に関するいくつかのリンクを共有できますか?それとも、クラスごとのメモリ量を制限するためのより良い解決策がいくつかありますか?

前もって感謝します。

0 投票する
1 に答える
1735 参照

c# - ネットワーク権限を含む完全な信頼のアクセス許可を持つホストされた CLR AppDomain の作成

アンマネージド プロセスで .NET ランタイムをホストする必要があります。COM 経由でランタイムをロードするコードがあり、アセンブリを AppDomain にロードして、コードを問題なく実行できます。

ただし、ネットワーク共有でホストされているアプリケーションで問題が発生し、それらを実行するためにアプリケーション ポリシーを変更する必要がありますが、これはオプションではありません。そこで、ランタイムのメイン AppDomain のアクセス許可レベルを無制限に設定したいと思います。

AppDomain ポリシー レベルを設定する方法の例を誰か提供できますか? アンマネージド コードから必要なクラスをインスタンス化して PolicyLevel と関連オブジェクトを作成し、ポリシーを設定する方法がよくわかりません。基本的に、使用する C++ コードからこれを機能させるために必要なインクルード/名前空間参照がわかりません。

この時点で私が持っているコードは次のとおりです。

必要なことを実行しているように見えるサンプル コード (コメント付き) をいくつかピックアップしましたが、PermissionSet と PolicyLevel の型参照を機能させるために必要な lib/include 参照がわかりません。

どんなアイデアでも大歓迎です...

0 投票する
1 に答える
2223 参照

.net - 非 CLR で作成されたスレッドでの CLR ホスティング例外処理

問題:

アンマネージ コードからCLRに入るスレッドの未処理の例外は、「通常の」未処理の例外 CLR 処理をトリガーしません。

以下のコードではCSSimpleObject.GetstringLength()、C++ から

  • "1" は、呼び出し元のスレッド (CLR で作成されていないスレッド) で例外をスローします。
  • "2" は、new Thread() (CLR で作成されたスレッド) で例外をスローします。

「1」の場合

  • CurrentDomain_UnhandledException() が呼び出されることはありません。
  • アプリケーション ドメインとプロセスはロードされたまま実行され、FAILED のみが表示されます。

「2」の場合(想定される動作)

  • CurrentDomain_UnhandledException() が呼び出されます。
  • プロセスは強制終了されます。

質問:

「通常の」動作を得るために何をしなければなりませんか?

サンプルコード:

以下のコードは、「すべての相互運用と融合のサンプル」の Visual Studio 2010 の「 CppHostCLR」コード サンプルに基づいています。

ランタイムホスト (C++):

マネージド コード (C#):

これまでの研究:

MSDN は当初、非 CLR で作成されたスレッドで未処理の例外が多かれ少なかれ「自然に」動作する必要があることを暗示しています。「マネージ スレッドの例外」を参照してください。

共通言語ランタイムでは、スレッド内の未処理の例外のほとんどが自然に処理されます。ほとんどの場合、これは未処理の例外が原因でアプリケーションが終了することを意味します。」

「ほとんど」とは、CLR で作成されたスレッドの内部、スレッドの中止、およびアプリケーション ドメインのアンロード例外が異なる方法で処理されることを意味します。非 CLR スレッド内

「彼らは正常に進行し、アプリケーションは終了します。」

さらに調査した結果、「CLR で処理されない例外処理」にたどり着き、次のことがわかりました。

「例外が処理されなかった場合...マネージメソッドでは、例外はCLRを終了しますが、ネイティブSEH例外としてスタックを伝播し続けます(マネージ例外はネイティブSEH例外として表されます)... OS未処理例外フィルター (UEF) メカニズムによって、CLR の未処理の例外処理が常にトリガーされるとは限りません。通常の状況では、これは期待どおりに機能し、CLR の未処理の例外処理がトリガーされます。ただし、特定のインスタンスでは、これが発生しない場合があります。」

上記のコードの何が問題なのですか、または CLR の未処理の例外処理がトリガーされるように変更するにはどうすればよいですか?

更新 (2011-05-31):

私は古いバグ レポートを見つけまし

この問題を報告していただきありがとうございます。この動作は実際には、CLR 実行エンジンと CRT が UnhandledExceptionFilter をめぐって競合することによって引き起こされるバグです。CLR のアーキテクチャは、このシナリオをサポートするバージョン 4.0 で改訂されました。

更新 (2011-06-06):

これを正しく理解することがなぜ重要なのでしょうか?

  • ホスティング環境を作成している場合、開発者は例外処理で一貫した動作を期待しています
  • ネイティブ スレッドで「通常の CLR 例外処理」をトリガーする方法がない限り、常にマネージド スレッドに実行を転送する必要があることを意味します (たとえば、スレッド プールでのエンキュー)。
  • 実行をネイティブ スレッドからマネージド スレッドに転送する小さなコードがまだあります。すべての例外をキャッチし、何らかの方法でその状況を別の方法で処理する必要があります。

注: CLR の動作を変更するSetActionOnFailure()と、元の例外がマスクされてしまうという意味で、問題が悪化します (つまり、メモリ不足の代わりに、元のエラーがどこから来たのか手がかりがなくて、threadAborts が表示されます)。

0 投票する
1 に答える
8706 参照

com - .tlb ファイルをヘッダーと実装ファイルに変換するにはどうすればよいですか?

mscorlib.tlb を変換しようとしています。通常、C++ では次のように使用されます。

ヘッダーと実装ファイルに変換するにはどうすればよいですか?

Visual Studio を使用して、上記の行を含むダミーの cpp ファイルをコンパイルすると、.tlh ファイルが生成されました。実装ファイルもあるはずではありませんか?

0 投票する
1 に答える
289 参照

c++ - CLR4 ホスティング インターフェイスがヒープの破損を引き起こしていますか?

私はネイティブ CLR ホスティングを数週間使用しています。最初はかなりうまくいきました。しかし後で、アプリケーションの何かがヒープの破損を引き起こしていることに気付きました。これはCLRの起動が原因であることがわかりました。(次の短いバージョンのコードを参照してください。)

Rational Purify 例外

これを回避する方法についてのアイデアはありますか?現在、場合によってはまだ機能しますが、アプリケーションが大きくなるにつれて、エラーの可能性が指数関数的に増加します。