問題タブ [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 - 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がロードおよび保存される正確な場所を知りたいです。
ありがとうございました
c# - 既存のアセンブリ/モジュールの動的コピーを作成
アセンブリまたはモジュール/クラスの動的コピーを作成することはできますか? AssemblyBuilder
/を使用して最初から動的アセンブリまたはモジュールを作成する方法を簡単に見つけることができました(ここでModuleBuilder
見られるように) が、既存のアセンブリまたは型のコピーをそれぞれのビルダー型として作成する方法はありますか?
編集 1
たとえば、必須Program
のクラスとMain
メソッドを備えた標準のコンソール アプリケーションがあり、「A」という名前の別のクラスをプロジェクトに追加するとします。私の目標は、またはそのようなものを使用して、メソッドA
内でクラスの動的コピーを作成することです。Main
ModuleBuilder
編集 2
class のコピーを作成したい理由はA
、メソッド、フィールド、プロパティなどを含むが、動的に作成されたclass の正確な複製が必要だからです。A
私が望んでいないのは、TypeBuilder/CodeDom を使用して型とそのすべてのメンバー (メソッド、フィールド、プロパティなど) を手動で作成する必要があることです。クラスとその内部動作またはクラスは、この方法を使用して再現するのが大きくて面倒/不可能な場合があります。
うまくいけば、いくつかの疑似コードで私が探しているものを説明できます:
私は基本的にAssembly
、 をAssemblyBuilder
またはType
としてボックス化したいだけTypeBuilder
です。また、アセンブリを保存できる必要もありません。
c# - Interfaceを使用してAssembly.Loadでコンパイル時エラーを解決しようとしています
このスレッドで述べたように、実行時にアセンブリをコードにロードしていますが、そのアセンブリへのすべての参照は実行時に壊れています。
動的にロードされたアセンブリをコンパイル時にコードを壊す形に保つ方法は?
しかし今、私はこのスレッドの紳士が提案したテクニックを使用してこの問題を解決しようとしました:
http://www.codeproject.com/Articles/187788/Dynamically-Loading-NET-Assemblies-using-Interface
ここでの唯一の問題は、動的アセンブリからアクティブ化しているクラスが、インターフェイスで定義できないネイティブ型をそのアセンブリに使用することです。それが私が立ち往生しているところです。
また、これらの外部アセンブリのネイティブ型をオブジェクト/ダイナミックに置き換えようとしましたが、その時点でキャストが失敗しています。
この問題を解決する方法について何か提案はありますか?
c# - 動的モジュールが型ロード例外を持つことができるのはいつですか?
アプリケーションの実行時に型が追加される動的モジュールがあります。モジュールは、次のコードで作成されます。
アプリケーションの他の部分も、モジュールのアセンブリで GetTypes() を呼び出すことがあります。時折、これが発生すると、動的モジュールの型の 1 つに対して TypeLoadException が発生します。スタック トレースは次のとおりです。
私の質問は、この例外の原因は何ですか? ランタイム モジュールは本当にスレッド セーフですか?それとも、型の作成途中で GetTypes() が呼び出される競合状態が発生する可能性はありますか?
編集:これは、バグを確実に再現するコードの小さなスニペットです。GetTypes() が DefineType() と CreateType() の間で呼び出されると、例外が発生するようになりました。
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_MSIL
IronPython のようにインストールする必要があります。【GACで解決】
[編集] Extra pts に関する新しい質問 すべての実行時メソッドを実行可能ファイルに静的にコンパイルする方法はありますか?
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 が変更された可能性があります。でも、
私の質問
Emit
メソッドに を受け取るオーバーロードがなくなったように見える理由を知っている人はいModuleBuilder
ますか?- Roslyn を使用しながら、このコンパイルを高速化する別の方法はあります
CodeDom
か?