關於錯誤“未能加載文件或程序集”的錯誤的若干處理辦法——對GAC的簡單應用

一、原因

通常來說,類庫作爲應用程序的一部分,在程序運行之前就應該被引用到應用程序之中,並且其dll文件也應該與應用程序的.exe文件位於同一目錄之下。當dll與.exe不在同一目錄下時,就會引發“無法找到指定程序集”的錯誤。類庫不像即插即用的插件,它是應用程序不可拆卸的一部分。

二、一般解決方案

在說完原因之後,其實解決方案也就已經出來了——將dll於.exe置於同一目錄下即可。

當然,這只是最爲簡單的一種解決方法,而它所留下的後遺症也是顯而易見的:如果你有多個不同的應用程序引用了同一個類庫時,就將不得不在每一個應用複製一個dll,這實在是有些麻煩且不夠優雅。這種方案又可以有幾種實現方法。

方法1:在指定引用的屬性中選擇“複製到本地”一欄,並將其設置爲true

方法2:在.exe目錄下新建一個文件夾,並使其名稱與類庫名稱一致,然後將類庫置於此文件夾下

方法3:打開app.config文件,並添加以下代碼:

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="文件名"></probing>
      </assemblyBinding>
    </runtime>

只要將“文件名”替換爲dll的目錄即可,但需要注意的是,存儲dll的文件必須置於與.exe同一目錄下,否則這個方法無效

一般解決方案雖然解決了問題,但仍不夠優美,下面我將介紹另一種方法。

三、對GAC的簡單應用

GAC全稱是Global Assembly Cache,作用是可以存放一些公共Assembly,也就是我們常說的公共類庫。這樣,很多程序就可以從GAC裏面取得,而不需要再把所有要用到的dll都拷貝到應用程序的執行目錄下面。

使用步驟:

(1)打開“開發人員命令提示符”

(2)創建密鑰:

(3)使用密鑰:

(4)重新編譯後將程序集添加到緩存(這一步驟需要以管理員權限打開開發人員命令提示符):

(5)將目標添加目標引用並將“複製到本地”設置爲false

以上就是解決方法

然後是將程序集移出緩存的方法:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章