問題タブ [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.
sql-server - 連番を生成するSQLServer関数
dbo.GetNextNumber()
呼び出しごとに連番を生成するSQLServer関数が欲しいのですが。私が理解している限り、SQL Serverは関数が決定論的でなければならないと主張しているため、ネイティブT-SQL関数ではこれは不可能です。しかし、これを実行するネイティブT-SQL関数を見せていただければ、本当に私の一日になります。
おそらくこれはCLR関数を使用して記述できるのではないかと思いました。CLR関数は静的であるため、シーケンス番号はset操作の呼び出しコンテキストに格納する必要があります。静的変数として格納すると、同じシーケンスを使用する複数の接続が発生し、それほど連続していない番号になります。組み込みCLRについて、設定操作(選択、更新、削除、挿入)の呼び出しコンテキストがCLR側から到達可能かどうかを確認するのに十分な知識がありません。
一日の終わりに、次のクエリ
結果を返す必要があります
コンテキストをリセットするための別の関数呼び出しが必要な場合は、次のように問題ありません。
誤解を防ぎ、間違った質問に答える時間を無駄にする可能性を減らすために、私はテーブルのID生成関数を探していません。また、いくつかのハッキング(関数ではなくprocを使用していますが)を認識しています。 ID列を持つ一時テーブル。機能は近いですが、ROW_NUMBER()
カットもしません。
ご回答ありがとうございます
ケマル
PSSQLServerにそのための組み込み関数があるのは驚くべきことです。関数(結合やwhere句で使用できない場合)は非常に簡単で非常に便利ですが、何らかの理由で含まれていません。
c# - clr のホスティングとスレッド例外のキャッチ
管理されたプラグインをロードできるプラグイン システムを作成しようとしています。例外があれば、ホストはプラグインをアンロードできるはずです。私の poc には、このような例外をスローする C# のサンプル コード ライブラリがあります ...
次に、このようなネイティブのwin32コンソールアプリがあります..
問題は、上記のコードを使用すると、ホストがマネージ コードの実行を完了することです (「これは決して印刷されない」という行が印刷されてしまいます)。clrPolicyManager->SetUnhandledExceptionPolicy(eHostDeterminedPolicy) を削除すると、ホスト プロセスがクラッシュします。 .
管理されていないホストで、エラーのあるアプリをランタイムから適切に削除して作業を続行できるようにすることはできますか?
c# - カスタム AppDomainManager が runtimeHost の起動に失敗する
次のappDomainManagerコードがあります
ランタイム ホストを起動するためのアンマネージ コードに従う
runtimeHost->Start() の呼び出しがエラー コード -2146233054 で失敗します。これを修正するにはどうすればよいか教えてください。
com - ネイティブでの CLR のホスティング - COM インターフェイス、未解決の外部シンボル _CStdStubBuffer_Release@4
私は CLR のホスティングを試しています (今のところモノを使用しようとはしていませんが、おそらく試してみます)。基本的に、私はこれに従っています:
http://www.lenholgate.com/blog/2010/07/clr-hosting---a-flexible-managed-plugin-system-part-1.html
ただし、その記事では十分に説明されていないため、COM 自体に問題があり、(COM で遊んだことはありません) 学習しながら学習しています。
インターフェイスを定義しました:
そして生成されたファイルを私のネイティブプロジェクトに含めました。ただし、リンカーが解決できないため、実行可能ファイルをビルドできません: _CStdStubBuffer_Release@4
. はRpcRT4.lib
リンクされていますが、実行dumpbin rpcrt4.lib /all | grep _CStdStubBuffer_Release
しましたが、そのライブラリによってエクスポートされたようなものはありませんCStdStubBuffer_DebugServerRelease
。それで、問題は、そのメソッドが存在しないと思われる場合、そのメソッドを正確に参照するものは何ですか?
さらに調査を行ったところ、このメソッドは IDL ツールによって生成された .c ファイルを介して参照されていることがわかりました。
および CStdStubBuffer_METHODS はRpcProxy.h
、Windows SDK で定義されていますv7.0A
。
実際には CStdStubBuffer_Release メソッドが必要ですが、http://msdn.microsoft.com/en-us/library/windows/desktop/ms764247%28v=VS.85%29.aspxとは少し異なります。
次に、他のどのライブラリをリンクする必要がありますか?
.net - CLRホストからProvideAssemblyによってAppDomainManagerをロードできますか?
カスタム AppDomain Manager と AssemblyManager を使用して .net clr をホストするアプリケーションと、ストアを使用するアプリケーションがあります。
AppDomainManager を含むアセンブリが実行可能ファイルと同じディレクトリにある dll である場合、これはすべて正常に機能します。
私がやりたいことは、実行可能ファイル内に Managers アセンブリを埋め込むことです。これを行うと、ProvideAssembly が正しい厳密な名前で呼び出され、アセンブリ バイトを含むストリームが返されますが、ICLRRuntimeHost->Start() は型をロードできないことを示すエラーを返します。
すべてのアセンブリ バインディングの詳細などは一致します。
私の質問は、この構成がサポートされているかどうかを知っている人はいますか? ファイルからではなく、この方法で AppDomainManagers アセンブリを読み込むことはできますか?
現在、CLR には IHostAssemblyManager のみを提供します。そして電話:
マップからバインド ID をルックアップし、格納されたデータの IStream を返します (デバッガーを使用してステップ スルーし、何も失敗しませんでした)。
私は次のようにバインディングIDを取得します:
c# - CLRホスティング:任意のメソッドシグネチャを使用して関数を呼び出しますか?
C ++プログラムを使用して、CLRをロードし、C#ライブラリの関数を呼び出す必要があります。呼び出す必要のある関数は、パラメーターとしてCOMインターフェイスを取ります。
私の問題は、CLRホスティングインターフェイスでは、次のシグネチャを使用してメソッドを呼び出すことしかできないようです。
たとえば、このC ++コードはCLRをロードし、「test.exe」でP.Test関数を実行します。
私がする必要があるのは、このメソッドシグネチャを使用して関数を呼び出すことです(私はC#コードを所有しているので、変更できます)。
ここで、IFooはcomインターフェイスです。次のような関数を呼び出すことができれば、必要なことを実行することもできます。
SomeFunctionに正しいデリゲートを構築させてから、Marshal.GetFunctionPointerForDelegateを使用することができます。ただし、ホスティングインターフェイスにint func(string)シグネチャを使用して関数を呼び出す以外の方法を実行させる方法がわかりません。
別の署名を持つC++コードからC#関数を呼び出す方法を知っている人はいますか?
(これにはC ++ / CLIを使用できないことに注意してください。ホスティングAPIを使用する必要があります。)
c# - C# とアンマネージ ネイティブ C++ で、インストールされている CLR のバージョンを特定する一般的な方法はありますか?
タイトルが示すように:C#、特にアンマネージ ネイティブ C++ で、インストールされている CLR バージョンを特定する一般的な方法はありますか? これは、この KB 記事に従ってフレームワークがインストールされているかどうかを確認するだけではないことを意味します。ここで CLR1、CLR1.1、および CLR2 に対して行ったように、CLR インターフェイスを使用してそれを実行したいと考えています。このようにして、それらが実際にインストールされていることを確認できます。ただし、これは CLR4 には当てはまりません。何か案は?
私の目標は、 Clrver (プロセス リストの機能に関係なく) のように、利用可能な CLR バージョンの列挙を作成することです。
.net - カスタム CLR ホスト - アプリケーションの「一時停止」/「再開」
最近、特にアプリケーションを一時停止し、その状態を保存し、後で再度起動できるようにするために、.Net アプリケーションを一時停止および再開する機能を検討してきました。
カスタム CLR ホストを作成することによって提供されるオプションを調べてきましたが、これは確かに難解です。カスタム ホストは、タスク、メモリ管理、ロックなどの独自の実装を提供できるようです。このことから、ICLRTask を介してアプリケーションを一時停止および再開できるカスタム CLR ホストを作成できるように見えますが、提供されているインターフェイスに、すべてのタスクを一時停止し、プログラム全体の状態をディスクに保存し、後でアプリケーションを元に戻すのに十分なフックがあるかどうかはわかりません。まったく不可能だと誰かが断言できますか?また、アプリケーションの小さなサブセットでのみ可能かどうかも気にしません。ここでの可能性に興味があります。
c++ - IHostAssemblyStore::ProvideAssembly-フォルダーからのアセンブリの実装
ネイティブの.exeファイルとは異なるフォルダーからマネージドclrホスティングシナリオでAppDomainManagerアセンブリをロードする方法を理解しようとしています。
誰かがIHostAssemblyStore::ProvideAssembly実装を実行しましたか?これは、フォルダーからAppDomainManagerアセンブリをロードし、それを共有したいと思いますか?
私はこのWinApi/OLE /その他のプログラミングに不慣れであり、C++でディスク上のファイルからIStream*を取得する方法がわかりません。
または、任意のフォルダからDefaultDomainのAppDomainManagerをロードする別の方法はありますか?
c# - 同じプロセスにロードされた 2 つの .NET CLR はどのように相互に通信できますか?
同じボックスで 2 つの CLR を実行できるようになりましたが、どうすれば相互に「対話」できるでしょうか?
GUI が .NET 2.0 CLR で実行されており、スクリプトが .NET 4.0 CLR で実行されているとします。たとえば、4.0 環境から 2.0 ベースの GUI を変更する方法はありますか?
この手法を使用して .NET C# REPL 環境を別の .net プロセスに挿入すると、まさにこの問題が発生します:ビデオ: Injecting C# DLLs into Managed (C#) and Unmanaged (C++) processes
注: Reddit で同様の質問をしましたが、そのバージョンには多数の参照が含まれており、Side-by-Side 実行と CLR ホスティングのトピックに興味がある場合に役立ちます。