2009-06-05 59 views
6

我有幾個.NET程序集,同一版本,文件名相同,但位於不同的位置:組件的順序加載

  1. 程序文件夾
  2. C:\ WINDOWS
  3. C: \ Windows \ System32下
  4. GAC

現在,該位置的組件將首先裝?

回答

4

.NET程序集都有不同的搜索順序比普通窗戶.dll文件。只有在強制命名簽名的組件時,GAC纔會被檢查。如果程序集沒有簽名的gac/not strong名稱,則在此之後檢查本地文件夾。這是.net程序集搜索順序的結尾,上面的1,2和3不會被檢查。

您可以通過爲您的應用程序提供本地配置文件來更改.net查找程序集的位置。

此外,this post in the microsoft.public.dotnet.framework.aspnet group包含非常有用的信息。

+1

可能值得使用`ProbingPath`查找更新此 – GETah 2014-07-07 09:35:34

0

C:\ Windows和C:\ Windows \ System32與託管裝配探測無關。該框架不會在那裏尋找組件。

它首先在GAC/Application Folder,然後如果在App.config文件中指定的文件夾指向的codebase/privatepath設置。 (只有強名稱的程序集纔可以放在GAC中。) 探測它時,通過追加.dll或.exe來查找多個組合,查找名爲assembly.exe/.dll的文件夾,如果需要,查找針對特定文化的程序集。

查看運行時檢查程序集解析失敗的文件夾的好工具是Fusion Log Viewer。在VS命令提示符處輸入'fuslogvw'。它顯示由ApplicationName和名稱鍵入的條目