2009-07-31 13 views

回答

2

2解決方案來我的心,但我認爲還有更簡單的方法(我忘了或別不知道:)):
1.使用您可以創建的其他AppDomain加載您的部件。卸載整個AddDomain也將卸載加載的程序集(但僅限那些使用此AppDomain加載的程序集)。
2.使用一些api,例如CCI,它允許你查看被管理的dll的內部,而不用反射機制加載它。

+0

thx,將調查cci,第一個選項不起作用,由於依賴關係 – Kumar 2009-07-31 18:15:36

+0

看着它,並將無處...唯一的樣本,我發現是http://www.codeproject.com/KB/recipes/Not_Used_Analysis.aspx但它是舊的,不編譯 – Kumar 2009-08-03 17:21:56

2

庫馬爾,

您可以卸載的.Net DLL,但你必須使用AppDomain對象來首先加載它們,然後再卸載。

請看:http://msdn.microsoft.com/en-us/library/system.appdomain(VS.80).aspx

如果你仍然想避免這種類型的過程,我想你可以解析的DLL自己,但會比使用AppDomain中,我認爲更多的工作。

-p

+0

問題是解決在新的應用程序域沙箱 不知何故,sandBox.AssemblyResolve + =新ResolveEventHandler DLL的依賴(REH ) 產生一個錯誤,說當前組件未找到? 任何線索? – Kumar 2009-07-31 17:53:00

0

我敢肯定有人會糾正我,如果我錯了,但不是清單只是DLL中的另一個資源?如果是這樣,您可以像其他資源一樣閱讀它。

這裏是一個開源的工具,可以讓你探索一個DLL的資源:

http://www.wilsonc.demon.co.uk/d10resourceeditor.htm 

果然,我可以看到它嵌入清單。

因此,使用LoadLibrary()加載DLL並去尋找資源。

5

發現這個 System.Reflection.Assembly.ReflectionOnlyLoadFrom(路徑) 的伎倆