我有幾個.NET程序集,同一版本,文件名相同,但位於不同的位置:組件的順序加載
- 程序文件夾
- C:\ WINDOWS
- C: \ Windows \ System32下
- GAC
現在,該位置的組件將首先裝?
我有幾個.NET程序集,同一版本,文件名相同,但位於不同的位置:組件的順序加載
現在,該位置的組件將首先裝?
.NET程序集都有不同的搜索順序比普通窗戶.dll文件。只有在強制命名簽名的組件時,GAC纔會被檢查。如果程序集沒有簽名的gac/not strong名稱,則在此之後檢查本地文件夾。這是.net程序集搜索順序的結尾,上面的1,2和3不會被檢查。
您可以通過爲您的應用程序提供本地配置文件來更改.net查找程序集的位置。
此外,this post in the microsoft.public.dotnet.framework.aspnet
group包含非常有用的信息。
C:\ Windows和C:\ Windows \ System32與託管裝配探測無關。該框架不會在那裏尋找組件。
它首先在GAC
/Application Folder
,然後如果在App.config文件中指定的文件夾指向的codebase
/privatepath
設置。 (只有強名稱的程序集纔可以放在GAC中。) 探測它時,通過追加.dll或.exe來查找多個組合,查找名爲assembly.exe/.dll的文件夾,如果需要,查找針對特定文化的程序集。
查看運行時檢查程序集解析失敗的文件夾的好工具是Fusion Log Viewer。在VS命令提示符處輸入'fuslogvw'。它顯示由ApplicationName和名稱鍵入的條目
可能值得使用`ProbingPath`查找更新此 – GETah 2014-07-07 09:35:34