我有一些庫代碼可以從我的應用程序中使用,也可以在Visual Studio安裝程序項目中使用.NET自定義操作。庫代碼反過來使用企業庫日誌記錄塊來執行日誌記錄。我如何在msiexec內運行的自定義操作的上下文中將配置信息提供給企業庫?在我對EntLib進行任何調用之前,是否可以在代碼中引導配置機制?如何在.NET自定義操作中使用企業庫日誌記錄
更新:我製作了一個似乎可以工作的黑客,但依靠使用反射設置非公共靜態字段。很遺憾,EntLib與.NET ConfigurationManager緊密耦合。
var factory = new LogWriterFactory(new FakeConfigSource("foo.config"));
var field = typeof (Logger).GetField("factory", BindingFlags.Static | BindingFlags.NonPublic);
field.SetValue(null, factory);
Logger.Write("Test");
更新2:雖然是黑客在試驗檯的工作原理,當MSIEXEC的上下文中運行,組裝裝載機沒有找到在配置文件中引用的組件。 Fuslogvw表示AppBase是windows system32目錄,這是有道理的。我不明白的是爲什麼找到自定義操作程序集的清單依賴關係(位於[TargetDir]目錄旁邊的自定義操作程序集),但在配置文件中調用的動態加載程序集卻沒有。看不到任何解決方法。
是的,謝謝,但不是真的我以後。我正在使用使用企業庫的庫代碼。我實際上並不需要在任何地方登錄,只是使用entlib的深層嵌套代碼試圖從config初始化自己。 – jlew 2009-02-24 18:13:13