PowerShellスクリプトの例外をMicrosoft Enterprise Library v5.0例外処理ブロックに送るカスタムPowerShell 1.0コマンドレットを作成しています。Microsoft Enterprise Library 5.0とカスタムpowershellコマンドレットの問題
コマンドレットがdllにコンパイルされ、configを使用してExceptionManagerのインスタンスを作成しようとすると、Exception handling configが外部ファイルからロードされます。
Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource config =
new Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource(configFile);
WriteDebug("Config loaded from " + Path.GetFullPath(configFile));
EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(config);
exManager = EnterpriseLibraryContainer.CreateDefaultContainer(config).GetInstance<ExceptionManager>();
私は次のエラーでのPowerShellからの私のコマンドを呼び出すときには失敗:
Microsoft.Practices.ServiceLocation.ActivationException: Activation error occured while trying to get instance of type ExceptionManager, key "" ---> Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionManager", name = "(none)". Exception occurred while: while resolving. Exception is: InvalidOperationException - The type ExceptionManager cannot be constructed. You must configure the container to supply this value.
イライラする事は正確にスタンドアロンのコンソールアプリケーションで使用する場合のコードが完全に正常に動作していることです同じ構成。なぜ私はこのエラーが出ているのか分かりません。私は設定ファイルで参照されている同じアセンブリを使用していることを確認しました。私はプロジェクトで必要なすべてのエンタープライズライブラリDLLを参照しています。
さらに、エンタープライズライブラリのdllファイルをPowerShellインストールディレクトリ(%SystemRoot%\ system32 \ WindowsPowerShell \ v1.0)にコピーしなければなりませんでした。そうしないと、正しいライブラリを見つけることができないというFileNotFoundExceptions構成ファイルが処理されていました。 PowerShellやエンタープライズライブラリの経験はあまりありませんが、AppDomainの設定でこれを解決することで解決できるかもしれません。
本当にあなたは余分なものをsystem32領域に押し込みたくないと確信しています。あなたは本当にモジュールにあなたのPowerShellのものをパッケージ化する必要があります、その後、アセンブリの解決の問題が管理されます。もう一つの問題は、PowerShellプロセスがあなたのスタンドアロンとは異なるapp.configファイルを使用していることです。 ELブロックを構成する別の方法を見つける必要があります。それは私が助けることができる何かではありません... – beefarino
@beefarino提案のおかげで。システムフォルダにものを押し込むことは間違いなく理想的です。残念ながら、私はpowershell 1.0に悩まされています。だから、モジュールは私の選択肢ではないと思います。 – Atriarch