問題タブ [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.

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

.net - CodeBaseからロードされた.NETアセンブリはどこに行きますか?

アプリケーション構成で<codebase>要素を使用して外部の場所からdllをロードしています。アセンブリがインスタンス化される場所を知りたいですか?

ローカルドライブ(appbaseの外部)とネットワーク共有ドライブを指すように<codebase>を作成し、fuslogvwとプロセスモニターを実行して何が起こっているかを確認しました。しかし、私は内部で実際に何が起こっているのかを知ることができませんでした。

以下のリンクは、ユーザーに固有のアプリケーションキャッシュに移動するときに説明します。 http://msdn.microsoft.com/en-us/magazine/cc164080.aspx

以下のリンクは、特別なGACキャッシュに移動する際の説明です。 http://www.developer.am/c-net-platform/?page=understanding-the-codebase-element

全体的に、キャッシュの場所にロードする必要があることは理解していますが、確認できませんでした。助けてください。ddlがロードおよび保存される正確な場所を知りたいです。

ありがとうございました

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

c# - 既存のアセンブリ/モジュールの動的コピーを作成

アセンブリまたはモジュール/クラスの動的コピーを作成することはできますか? AssemblyBuilder/を使用して最初から動的アセンブリまたはモジュールを作成する方法を簡単に見つけることができました(ここでModuleBuilder見られるように) が、既存のアセンブリまたは型のコピーをそれぞれのビルダー型として作成する方法はありますか?

編集 1

たとえば、必須ProgramのクラスとMainメソッドを備えた標準のコンソール アプリケーションがあり、「A」という名前の別のクラスをプロジェクトに追加するとします。私の目標は、またはそのようなものを使用して、メソッドA内でクラスの動的コピーを作成することです。MainModuleBuilder

編集 2

class のコピーを作成したい理由はA、メソッド、フィールド、プロパティなどを含むが、動的に作成されたclass の正確な複製が必要だからです。A私が望んでいないのは、TypeBuilder/CodeDom を使用して型とそのすべてのメンバー (メソッド、フィールド、プロパティなど) を手動で作成する必要があることです。クラスとその内部動作またはクラスは、この方法を使用して再現するのが大きくて面倒/不可能な場合があります。

うまくいけば、いくつかの疑似コードで私が探しているものを説明できます:

私は基本的にAssembly、 をAssemblyBuilderまたはTypeとしてボックス化したいだけTypeBuilderです。また、アセンブリを保存できる必要もありません。

0 投票する
0 に答える
100 参照

c# - Interfaceを使用してAssembly.Loadでコンパイル時エラーを解決しようとしています

このスレッドで述べたように、実行時にアセンブリをコードにロードしていますが、そのアセンブリへのすべての参照は実行時に壊れています。

動的にロードされたアセンブリをコンパイル時にコードを壊す形に保つ方法は?

しかし今、私はこのスレッドの紳士が提案したテクニックを使用してこの問題を解決しようとしました:

http://www.codeproject.com/Articles/187788/Dynamically-Loading-NET-Assemblies-using-Interface

ここでの唯一の問題は、動的アセンブリからアクティブ化しているクラスが、インターフェイスで定義できないネイティブ型をそのアセンブリに使用することです。それが私が立ち往生しているところです。

また、これらの外部アセンブリのネイティブ型をオブジェクト/ダイナミックに置き換えようとしましたが、その時点でキャストが失敗しています。

この問題を解決する方法について何か提案はありますか?

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

c# - 動的モジュールが型ロード例外を持つことができるのはいつですか?

アプリケーションの実行時に型が追加される動的モジュールがあります。モジュールは、次のコードで作成されます。

アプリケーションの他の部分も、モジュールのアセンブリで GetTypes() を呼び出すことがあります。時折、これが発生すると、動的モジュールの型の 1 つに対して TypeLoadException が発生します。スタック トレースは次のとおりです。

私の質問は、この例外の原因は何ですか? ランタイム モジュールは本当にスレッド セーフですか?それとも、型の作成途中で GetTypes() が呼び出される競合状態が発生する可能性はありますか?

編集:これは、バグを確実に再現するコードの小さなスニペットです。GetTypes() が DefineType() と CreateType() の間で呼び出されると、例外が発生するようになりました。

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

c# - compiletoMethod() 式ツリーを使用してランタイムを静的にリンクおよびコンパイルする

私は、DLR を使用して Racket 言語を .NET に移植するプロジェクトに取り組んでいます。

式ツリーを構築し、CompileToMethod()メソッドを呼び出します。

関連する実行可能エミッション コード: ( How to Save an Expression Tree as the Main Entry Point to a New Executable Disk File?から取得)

Runtime_rkt.dll関連するランタイム型変換、バッキング オブジェクトなどを含むランタイム ライブラリがあります。

Foo.exeとをRuntime_rkt.dll同じディレクトリに配置すると、すべて正常に動作します。私たちが抱えている問題は、(明らかに) ランタイム ライブラリを別の場所に移動したときです。最終的には、C:\Windows\Microsoft.NET\assembly\GAC_MSILIronPython のようにインストールする必要があります。【GACで解決】

[編集] Extra pts に関する新しい質問 すべての実行時メソッドを実行可能ファイルに静的にコンパイルする方法はありますか?

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

c# - MemoryStream の代わりに ModuleBuilder で Roslyn Emit メソッドを使用する

Roslyn を使用して動的アセンブリにコンパイルするときに、パフォーマンスに問題がありました。コンパイラを使用した場合、同じコードをコンパイルするのに約 300 ミリ秒かかるのに対し、コンパイルには約 3 秒かかりましたCodeDom。コンパイルを行うために使用しているコードの簡素化されたバージョンを次に示します。

この回答は、処理を高速化するために、MemoryStream の代わりに ModuleBuilder オブジェクトを Emit メソッドに渡すことを提案しています。私はそのパターンに従おうとしました。

しかし、Roslyn の私のバージョンにはEmit、. を受け取るメソッドのオーバーロードがないようModuleBuilderです。そのバージョンは次のとおりです。

Id: Microsoft.CodeAnalysis
バージョン: 0.6.4033103-beta (プレリリース)
プロジェクト情報: http://msdn.microsoft.com/en-US/roslyn

明らかに、これはプレリリースなので、API が変更された可能性があります。でも、

私の質問

  1. Emitメソッドに を受け取るオーバーロードがなくなったように見える理由を知っている人はいModuleBuilderますか?
  2. Roslyn を使用しながら、このコンパイルを高速化する別の方法はありますCodeDomか?