簡體   English   中英

.NET應用程序對DLL的使用

[英]Dll usage by .NET application

.NET專家有疑問。

我有一組WinForms applications ,這些WinForms applications使用dll的某些子集(其中一些在這些應用程序之間共享)。 所有二進制文件都位於同一目錄中。 我需要拆分這些WinForms應用程序,並僅獲取具體應用程序所需的dll。 我如何輕松做到這一點(需要快速的“ 5分鍾”解決方案)?

我考慮的選擇:

  1. domain.ExecuteAssembly(@“ exefilename”); domain.GetAssemblies(); //以確定應用程序使用了哪些程序集。

    需要單線程單元屬性或單獨的線程。 x86,x64和AnyCPU版本有問題。 有關安全性,框架版本等的許多技巧。

    因此,我認為這不是一個“ 5分鍾”的解決方案,需要進一步調查。

  2. Assembly.GetReferencedAssemblies()

    具有1級限制(當程序集引用程序集而又引用另一個程序集時不起作用)。 不適用於原始程序集加載(當您從文件中讀取並通過AppDomain.Load方法加載時(Byte [],Byte []))

  3. Process.Modules(來自System.Diagnostics)

    從.NET 4開始不起作用(這是為此問題輸入的msft connect的錯誤)。 NET 3.5很棒的“ 5分鍾”解決方案,但是我需要.NET 4.5的解決方案。

  4. 只需執行該應用程序,然后刪除文件夾中的每個dll。 使用過的文件將不會被刪除(文件將被鎖定)。 但是仍然不能用於原始程序集加載。

你還有其他建議嗎?

如果我沒記錯的話, IlDasm.exe會為您遞歸檢查DLL依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM