對於一個小小的C#編譯器,我需要找到System.dll,System.Xml.dll等標準.NET程序集的路徑以及「添加引用」中的「.NET」選項卡下列出的幾乎所有組件。 Visual Studio中的窗口(2010)。
我會使用絕對路徑,但我有一種感覺,這可以打破在特殊情況下。查找標準.NET程序集的位置?
回答
這些都存儲在GAC中%WINDIR%\assembly
,您可以在Windows資源管理器中查看它們。
實際的dll可以在GAC
,GAC_32
和GAC_MSIL
文件夾的子文件夾中找到,看似依賴於它們的版本。在我的機器上,我有另外三個NativeImages
文件夾,它們似乎也包含GAC'd dll。
Windows資源管理器不允許你直接瀏覽這些文件夾(據我所知),但你可以通過命令提示符來到那裏。
在GAC一個DLL的完整路徑是
%WINDIR%\assembly\GACFOLDER\FILENAME\VERSION__PUBLICKEYTOKEN\FILENAME.dll
例如在我的機器的System.Xml.dll
不同的版本可以在C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089
C:\WINDOWS\assembly\GAC\System.Xml\1.0.5000.0__b77a5c561934e089
C:\WINDOWS\assembly\NativeImages1_v1.1.4322\System.Xml\1.0.5000.0__b77a5c561934e089_2775eea1
C:\WINDOWS\assembly\NativeImages1_v1.1.4322\System.Xml\1.0.5000.0__b77a5c561934e089_4c5fbb92
GAC是否有路徑變量? GAC程序集是否始終存儲在c:\ windows \ assembly中? – 2011-06-08 15:27:18
我已經更新了我的答案,使用Windows目錄的路徑變量。 – 2011-06-08 15:29:15
謝謝!在這個文件夾中查看我已經看到了真正程序集的路徑......我可能會使用這些! – Vercas 2011-06-08 15:40:31
大部分是在GAC中,這是我相信你將被要求看你自己的編譯器中找到。在編譯器等方面提供幫助的文檔是在舊版本.NET Framework下的tools開發者文件夾下找到的。
我不會完全不利於對文件夾「硬編碼」本身,但是您將被鎖定到特定版本。我並不是建議這是正確的方法,但.NET的位置不可能改變,而且很可能您的編譯器停留在特定版本中。如果你走這條路線......爲了在各種機器上安全起見,你應該使用%WINDIR%來確定Windows的安裝位置(如果你從未使用過這個命令並且想要查看變量是什麼,請在命令提示符下試試cd%WINDIR%一樣)。學術演練結束了。
有一點需要注意的是,通過檢查「編譯器作爲服務」的方向,MS正在vNext(?)中前進,可以更好地爲您嘗試的某些內容提供服務。這個想法/功能已經出現在Mono(開源.NET)中。
編譯時,您可以使用引用程序集下%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework
另見(HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER)\SOFTWARE\Microsoft\.NETFramework
和(HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER)\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders
下的註冊表項,通過KB306149作爲記錄。
GAC更多用於運行時使用。
- 1. .NET應用程序在.NET程序集文件的什麼位置查找?
- 2. .Net應用程序標準圖標集
- 3. 合併.NET標準程序集
- 4. .NET ToolStrip標準圖標的位置
- 5. 當引用.net標準類庫時找不到System.Runtime程序集
- 6. 更改.NET應用程序的程序集解析位置
- 7. 查找程序/文件的位置Python
- 8. Python程序變成標準程序集?
- 9. 如何在SQL中調用標準的.NET程序集
- 10. 如何讓我的.net應用程序輔助位置查找相關程序集?
- 11. 在.Net中查找時區標準名稱的縮寫.net
- 12. 從.NET標準庫引用Xamarin.Android程序集
- 13. Python:查找註冊表以查找程序的安裝位置
- 14. Fortify的找不到.NET程序集
- 15. .NET程序集中64位公鑰標記的用途?
- 16. UITabBar標準圖標位置
- 17. 多查找標準
- 18. 如何確定.NET程序集(組件)的位置?
- 19. .NET在物理位置的程序集在哪裏?
- 20. 在.NET項目中複製引用程序集的位置?
- 21. C標準庫的位置
- 22. GAC +配置中的.NET程序集
- 23. C#WPF應用程序.NET 4.5設置鼠標位置
- 24. 在已排序的Mongo集合中查找文檔的位置
- 25. 什麼.Net程序集作爲標準集成到SQL Server 2008 R2 CLR中?
- 26. 查找Microsoft.Crm程序集
- 27. Django應用程序與非標準位置的models.py
- 28. App.config未找到.net程序集
- 29. Silverlight:如何處理標準程序集
- 30. 從程序集中查找應用程序配置文件
你正在編寫自己的編譯器嗎? – tomasmcguinness 2011-06-08 15:25:39
我相信你想要做的是在GAC中列出程序集。我沒有示例代碼來演示,但是,ILSpy執行此任務並且源代碼可用。也許你可以從中提取它。 http://wiki.sharpdevelop.net/ILSpy.ashx – 2011-06-08 15:30:38
@tomasmcguinness這不是我說的第一件事嗎? – Vercas 2011-06-08 15:36:32