基本上我想知道的是,當我在Visual Studio中添加一個引用到任何.dll文件時,這個DLL會被嵌入到可執行文件中嗎?如果不是如何可執行知道去哪裏尋找這些DLL文件:dll文件被引用後是否嵌入到可執行文件中?
回答
組件,無法嵌入。
如果您未引用強命名的程序集,它將被複制到可執行文件所在的文件夾(也可以將程序集放在其他任何位置)。 CLR在包含可執行文件的文件夾中或在您可以爲CLR設置的任何其他文件夾中查找此程序集。
如果您引用任何強名稱的程序集,則CLR將以相同方式查找此程序集因爲它在全局程序集緩存(GAC-MSDN - GAC)中查找不具有強命名的程序集和附加信息。
對強命名程序集的引用也將搜索應用程序的本地文件夾,您不必將其放入GAC因爲它是可用的。 –
@Lasse V.卡爾森,謝謝,編輯 –
庫可以通過兩種主要方式鏈接到可執行文件:動態和靜態。
動態表示可執行文件將在可執行文件中聲明對庫的依賴關係中的標記。假設它安裝在系統上,操作系統或運行時環境負責查找該庫。如果你正在使用這樣的庫,你需要知道它們來自哪裏(.NET,Visual Studio,第三方等),這樣你才能確保它們在你的應用程序分發時安裝在系統中。通常,您可以通過將它包含在與可執行文件相同的文件夾中來使用所需的庫版本(對於Windows),但通常不希望對可能已存在的庫執行此操作系統。
靜態意味着庫被編譯到可執行文件中。可執行文件要大得多,並且您可以保證使用您製作程序的庫的版本,但並非所有庫都可以靜態使用。
從字面上看,DLL意味着動態鏈接庫,因此您需要知道您使用的庫來自哪裏,以確保它們存在於您希望應用程序運行的系統上。
- 1. 在可執行文件中使用嵌入式.dll
- 2. 將文件嵌入到java可執行文件中
- 3. 將文件嵌入到現有的.Net可執行文件中
- 4. 如何在可執行文件中嵌入openCV Dll
- 5. helink dll可執行文件
- 6. 將ServiceStack DLL嵌入單聲道可執行文件
- 7. 是否可以在.net DLL中嵌入和使用可移植的可執行文件?
- 8. 將本地化資源.DLL嵌入到C#中的可執行文件?
- 9. 在.NET中嵌入OpenXML SDK文件可執行文件
- 10. 我如何在cpp可執行文件中嵌入licence.licx文件?
- 11. 將文件系統嵌入可執行文件中?
- 12. 可以將Json.Net嵌入到可執行文件中嗎?
- 13. 如何使用py2exe將文本文件嵌入到單個可執行文件
- 14. 使用.dll文件編譯可執行文件,.dll相對於.exe文件
- 15. 文件的行是否被索引?
- 16. 是否可以嵌入文件夾中的所有文件?
- 17. CMake:將ELF嵌入到可執行文件中
- 18. 如何將資源嵌入到單個可執行文件中?
- 19. 將資源文件嵌入到可執行文件中的性能
- 20. 找出哪些可執行文件引用了.NET dll?
- 21. 在可執行文件中使用分組DLL DLL
- 22. 可執行文件如何從DLL文件中查找函數?
- 23. 當exe被用作dll時,是否可以訪問app.config文件?
- 24. 是否可以將WindowsCE可執行文件運行到Windows Mobile?
- 25. 停止XCode將嵌入編譯時間嵌入到可執行文件中
- 26. 嵌入清單後無法簽署引導程序可執行文件(setup.exe)
- 27. 是否可以將FLV文件嵌入到閃存中?
- 28. 與DLL彈簧啓動可執行文件的可執行文件
- 29. 在v110可執行文件中運行v90 COM DLL是否安全?
- 30. 我可以知道一個JavaScript文件是否已被執行?
不。這些是框架程序集。 CLR知道如何在GAC中找到它們,c:\ windows \ microsoft.net \ assembly –