[C#] 使用Enterprise Library的Interception時,所需要的dll檔案

  • 9371
  • 0

[C#] 使用Enterprise Library的Interception時,所需要的dll檔案

 

在Enterprise Library中提供了一種Aop的框架,

在較舊的版本中是稱為Policy Injection Application Block (PIAB),

而在新的版本中,已經整合在Unity Application Block之中。

最近在嘗試將Enterprise Library導入開發中的專案,

使用在Class上加上LogCallHandler的方式,

來替程式加入詳細的Log。

 

平常開發環境所使用的電腦都是有安裝Enterprise Library,

所以在Coding和Build的時候都沒有什麼問題,

但如果在沒有安裝Enterprise Library的電腦上去進行Build的時候,

雖然可以順利通過,但執行程式時卻會產生Exception如下

 

Resolution of the dependency failed,

type = "*****************", name = "".

Exception message is: The current build operation (build key Build Key[**************, null]) failed:

'Microsoft.Practices.EnterpriseLibrary.PolicyInjection.CallHandlers.LogCallHandler' 的型別初始設定式發生例外狀況。

(Strategy type ExtendedInstanceInterceptionStrategy, index 0)

 

檢查了該加的Reference都有加入,Build也順利的通過,

但程式卻不能執行,推測應該是在進行Reflection的時候缺少了檔案,

最後在比較有安裝和沒安裝電腦所Build出來的檔案發現,

在使用Aop框架的時候,也須同時將創建CallHandler需要的dll Copy過去,

程式才能順利執行,程式執行根目錄下須存在的dll如下

  • Microsoft.Practices.EnterpriseLibrary.Common.dll
  • Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
  • Microsoft.Practices.EnterpriseLibrary.Logging.dll
  • Microsoft.Practices.EnterpriseLibrary.PolicyInjection.CallHandlers.dll
  • Microsoft.Practices.EnterpriseLibrary.Security.dll
  • Microsoft.Practices.EnterpriseLibrary.Validation.dll
  • Microsoft.Practices.ObjectBuilder2.dll
  • Microsoft.Practices.Unity.Configuration.dll
  • Microsoft.Practices.Unity.dll
  • Microsoft.Practices.Unity.Interception.dll

若有需要在沒安裝Enterprise Library的電腦上Build程式時,

需檢查是否有遺漏所需的dll檔案,

否則可能會造成Unity Application Block在創建實體時,

發生不可預期的錯誤。

 

※若有安裝Enterprise Library,這些檔案會自動被Copy到程式執行的根目錄下