![](/img/trans.png)
[英].NET 3.5 application High CPU usage indicated by mscorwks.dll InitializeFusion
[英]Dll usage by .NET application
對.NET
專家有疑問。
我有一組WinForms applications
,這些WinForms applications
使用dll的某些子集(其中一些在這些應用程序之間共享)。 所有二進制文件都位於同一目錄中。 我需要拆分這些WinForms應用程序,並僅獲取具體應用程序所需的dll。 我如何輕松做到這一點(需要快速的“ 5分鍾”解決方案)?
我考慮的選擇:
domain.ExecuteAssembly(@“ exefilename”); domain.GetAssemblies(); //以確定應用程序使用了哪些程序集。
需要單線程單元屬性或單獨的線程。 x86,x64和AnyCPU版本有問題。 有關安全性,框架版本等的許多技巧。
因此,我認為這不是一個“ 5分鍾”的解決方案,需要進一步調查。
Assembly.GetReferencedAssemblies()
具有1級限制(當程序集引用程序集而又引用另一個程序集時不起作用)。 不適用於原始程序集加載(當您從文件中讀取並通過AppDomain.Load方法加載時(Byte [],Byte []))
Process.Modules(來自System.Diagnostics)
從.NET 4開始不起作用(這是為此問題輸入的msft connect的錯誤)。 NET 3.5很棒的“ 5分鍾”解決方案,但是我需要.NET 4.5的解決方案。
只需執行該應用程序,然后刪除文件夾中的每個dll。 使用過的文件將不會被刪除(文件將被鎖定)。 但是仍然不能用於原始程序集加載。
你還有其他建議嗎?
如果我沒記錯的話, IlDasm.exe會為您遞歸檢查DLL依賴項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.