問題タブ [dynamic-assemblies]
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.
.net - アセンブリを動的にロードするときに依存関係ディレクトリを指定できますか?
このような設定が可能かどうか疑問に思います:
c:\ eflow \ proxy.dll(アプリケーションによってロードされるメインDLL)c:\ eflow \ application \ dynamic.dll(proxy.dllによって動的にロードされるDLL)c:\ eflow \dependency.dll(dynamic.dllに必要な依存DLL) )。
基本的に、DLLを動的にロードしたいのですが(クラスをインスタンス化するためなど)、そのDLLの依存関係を別の場所に保存します。
これは可能ですか?これらの依存DLLのコピーをすべてのサブディレクトリに置きたくありません...(署名されておらず、サードパーティのDLLであるため、GACにロードできません)
ioc-container - TFS 2010 - WebDeployment - 間接参照アセンブリがありません
次の問題があります。
ソリューション構造: AutofacRegistration 参照: Repositories.dll
Web アプリケーションの参照: AutofacRegistration.dll
この Web アプリケーションでは、AutofacRegistration.dll を参照しており、このアセンブリは Repositories.dll を参照しています。Repositories.dll は、IOC コンテナごとに実行時にインスタンス化されます。
VS2010 でソリューションをビルドし、Web アプリを参照すると、期待どおりにすべてが正常に機能しています。
ビルド サーバー (TFS 2010) を使用して Web デプロイを使用すると、Repositories.dll に web-app\bin フォルダーがなく、ランタイム例外が発生します (Repositories.dll でクラスをインスタンス化する必要がある場合)。
しかし、Repositories.dll はドロップ場所にあるため、Web 配置ターゲットはこのファイルをコピーしません。これを解決する方法はありますか??
c# - 双方向クロスプロセス通信
システムのようなプラグインサンドボックスが欲しいプロジェクトに取り組んでいますが、双方向のリアルタイムクロスプロセス通信の実行に問題があります。最初はオブジェクトメタデータを渡すことができるWCFについて考えましたが、すぐにWCFのサービスクライアントモデルが問題になることに気付きました。しかし、私がすべてのアイデアと質問を置く前に、ここに私が計画したものがあります。
ほとんどの作業を実行するホストアプリケーションが必要です。このhost.exeを呼び出します。host.exeは、プログラムのメインアプリケーションロジックと、プラグインの起動、実行、および強制終了をホストします。プラグインは、MEFを介してプラグインをホストするプラグインプロキシを介してホストされるため、proxy.exeと呼びます。proxy.exeはプラグインdllをロードし、障害を分離する人里離れた環境でそれらをホストし、プラグインが失敗した場合、アプリケーションではなくプロキシを強制終了します。ホストとプロキシは双方向でリアルタイムに通信する必要があります。複数のプロキシホストが存在するため、オブジェクトデータを渡すことができるのが最適です。
それが私が欲しいものの基本的な考え方です。私はこれを行うためのいくつかの方法を考えていました。最初はWCFでしたが、WCFの動作方法は、サービスのサーバーがクライアントに要求/コマンドを送信することが不可能ではないにしても難しいと考えました。次のアイデアはTCPを使用し、ホストをTCPサーバーにして、通信に使用できるメッセージングプロトコルを開発しますが、WCFメタデータの贅沢がなく、複雑なクラス情報を渡すため、問題が発生します。正気を失っている。
私のすべての研究を通して、私は問題を次々と思いついたので、誰かがこの問題の解決策を提案することができれば幸いです。ありがとうございました。
c# - 動的アセンブリとメソッド
私は何年もの間.NETとC#をプログラムしてきましたがDynamicMethod
、リフレクションのコンテキスト内で動的アセンブリの概念とともにこのタイプに遭遇したのはごく最近のことです。それらは常にIL(ランタイムコード)生成内で使用されるようです。
残念ながら、MSDNは、動的アセンブリ/メソッドの実際が何であるか、またそれらを何に使用するかを定義するという非常に貧弱な仕事をしています。誰かがここで私を教えてくれませんか?DLRとは何か関係がありますか?実行時のアセンブリおよびメソッドの静的(通常)生成とはどのように異なりますか?それらをいつどのように使用するかについて何を知っておくべきですか?
c# - プラグインDLLファイルをロードしています。「呼び出されたメンバーはダイナミックアセンブリでサポートされていません。」
初期設定ファイルに含まれていないカスタムDLLがあります。それらは実行時にロードされます。このプロセスは.NET2.0の使用中には正常に機能しましたが、.NET 4.0を使用しているため、「呼び出されたメンバーは動的アセンブリでサポートされていません」というエラーメッセージが表示されます。
c# - 動的アセンブリへのアセンブリ/モジュールの読み込み
既に作成されている 1 つのアセンブリとStatic.dll
、実行時に作成する動的アセンブリがありますDynamic
。 Dynamic
から新しいタイプを作成するための IL コードを作成しますStatic.dll
。がDynamic
作成されると (正常に保存されます)、実行可能ファイルが実行されると、アセンブリStatic.dll
タイプを読み込めないため、エラーが発生します。Dynamic
exe出力でこのdllが見つからないため(または少なくともこれは私の推測です)、これが起こっていると思います。
Static.dll
誰かが結果の実行可能出力を実行したときにDynamic
、参照されている型を見つけることができるように、この参照に追加するにはどうすればよいでしょうか?
については知ってAssembly.Load()
いますが、これだけでは何も変わりません。または、少なくとも、実行時に型を使用する必要はなく、実行可能ファイルを実行するときに型を使用する必要があるため、これが何をもたらすのかわかりませんDynamic
。
最後に、私Static.dll
は.動的アセンブリ)。基本的に、動的アセンブリに、mscorlib の場所をマニフェストに保存させたいと考えています。.assembly extern mscorlib
Static
ありがとう
.net - .NET:ロード時にクラスを拡張しますか、それともクラスローダーの概念がありますか?
この質問はおそらく何百回も聞かれましたが、繰り返しになりますが、.NETにはクラスローダーの概念があります。そして、問題を詳しく説明します。開発するフレームワークにこのクラスのオブジェクトをプラグインできるようにするために必要ないくつかの追加のコード項目をクラスに挿入したくありません。
Javaでは、バイトコードを読み取り、必要な変更を適用し、クラスを型インスタンスとしてアプリケーションに提供するクラスローダーを使用してこれを行います。これで、リフレクションによってオブジェクトを作成できます。
これは、リフレクションとして、.NETでも確かに可能です。したがって、Type :: GetType()を使用すると、現在のAppDomainインスタンスのTypeResolverが呼び出されます。リゾルバ内で、元の型がロードされ、動的アセンブリで作成された派生型の基本クラスとして使用されます。派生型が同じアセンブリにないため、内部クラスの処理が簡単ではないため、少し注意が必要です。しかし、それは実行可能で安定しています。
そして今、私を衒学者のドイツ語と呼んでください。私は元の型と派生型をロードしていますが、Javaでは変更された型だけを持っています。これを.NETでも機能させることはできますか?
asp.net - コンパイル構成を変更するときの.NETコンポーネントの動作の違い
Visual Studioのリリース構成とデバッグ構成のどちらでコンパイルされたかによって、動作が異なるコードに問題があります。リリース構成に表示されるすべてのプロジェクトコンパイル設定を手動で変更して、デバッグ構成と一致するようにしましたが、問題は解決しません。
以下のコードは、実行中のアセンブリのGUIDを返します。
メソッドは「インデックスが配列の境界外にありました」で失敗します。リリースモードでのコンパイル後に実行された場合の例外。デバッグモードで正しく動作します。この理由は、この構成では、GetExecutingAssembly()によって作成されたアセンブリ参照が、基になる「実際の」アセンブリではなく、一時的なアセンブリ(App_Web_eelfd0ff、Version = 0.0.0.0、Culture = neutral、PublicKeyToken = nullなど)に対するものであるためです。
不思議なことに、同じコードを使用し、コンパイルモードに関係なく同じように動作する、同じWebで実行されている別のコンポーネントがあります。
なぜこれが起こっているのですか、そしてそれを防ぐ方法は?
c# - ソースコードの遺伝的進化
「自分自身を書く」コードをC#で書くことに興味があります。これは広い意味では不可能だと思いますが、ターゲット関数の本体を除くすべてを定義する動的アセンブリに、ある種のフォーマットを設定することを考えていました。次に、アルゴリズムまたはニューラルネットが関数本体を埋めようとします。この後、アセンブリが実行され、新しく起動されたアセンブリがターゲット関数の呼び出しを試み、その後、同じコードに基づいて別の新しいアセンブリを作成します。できれば、そのターゲット関数の実装を改善します。
この種の動作を考えると、C#と動的アセンブリが適切な選択になります(アセンブリの作成と実行にかかる時間が心配です)。実行するコードを動的に作成することに特化した言語はありますか、それともC#で十分なオプションですか?
また、アセンブリ全体のアプローチまたはセットアップに関するコメントは、アセンブリのアイデアを作成することを歓迎し、感謝しています!(あなたが言うことができなければ私は非常に新しいです)
ありがとう!
delegates - 式ツリーを新しい実行可能ディスクファイルへのメインエントリポイントとして保存するにはどうすればよいですか?
式ツリーをメインのエントリポイントとしてPEアセンブリにエクスポートしようとしています。式ツリーを構築してラムダ式を取得しました。次に例を示します。
ステップ3と5は私が欠けているものです。