12

私は、いくつかの外部 .NET アセンブリに含まれる型を操作する必要がある PowerShell v3 モジュールに取り組んでいます。

展開を容易にするために、このモジュールを合理的に自己完結型にしたいと考えており、これらのアセンブリが GAC に読み込まれることに依存したくありません。理想的には、必要なアセンブリ dll をモジュール フォルダーに配置し、PowerShell に依存して、モジュールが読み込まれるときにこれらのアセンブリを自動的に読み込むようにしたいと考えています。

Add-Type コマンドを使用して、次のようにアセンブリをブルート フォース ロードできることはわかっています。

Add-Type -AssemblyName "Some.Assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=sometoken"

しかし、私はモジュール マニフェストで必要なアセンブリ プロパティについても読んだことがあり、このアプローチが一見壊れやすい Add-Type コードを排除できることを期待しています。

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()

モジュール内の外部アセンブリを参照する最も信頼できる方法は何ですか? マニフェストで依存関係を宣言すると、モジュールが読み込まれるときにアセンブリが暗黙的に読み込まれますか? モジュール マニフェストを利用して必要なアセンブリを一覧表示した場合、アセンブリを読み込むコードを記述する必要がありますか?

Add-Typeアプローチを使用してすでにこれを機能させているため、単純な「機能させる」ソリューションを実際に探しているわけではありません...これを行う最も信頼できる方法のガイダンスと推奨事項を探しています。

4

1 に答える 1

11

そのパラメーターのNew-ModuleManifestドキュメントは-RequiredAssemblies同意します:

モジュールが必要とするアセンブリ (.dll) ファイルを指定します。アセンブリ ファイル名を入力します。Windows PowerShell は、型や形式の更新、入れ子になったモジュールのインポート、または RootModule キーの値で指定されたモジュール ファイルのインポートの前に、指定されたアセンブリを読み込みます。

このパラメーターを使用して、モジュールが必要とするすべてのアセンブリを一覧表示します。これには、FormatsToProcess キーまたは TypesToProcess キーに一覧表示されている書式設定ファイルまたは型ファイルを更新するために読み込む必要があるアセンブリが含まれます。

そして、私は何か違うものを見つけることができません(例えば、MSDNで)。

于 2013-08-28T19:37:37.073 に答える