我剛剛開始使用GAC,我試圖在應該使用GAC時不應該使用它。這是我的情況:何時使用GAC?
我開發的軟件主要是加載項到另一個商業產品,以便產品將我的產品加載到它的代碼中。我已經開發了幾個程序集供我的所有應用程序使用(例如,我的許可證模塊)。這些庫的.dll文件被安裝到主應用程序目錄,以便父程序從那裏加載它們。
問題是,當用戶安裝了我的兩個軟件標題時,可能會有衝突,因爲父程序只加載它發現的程序集的第一個副本,而不管版本。因此,如果他們的軟件版本1.0中包含License1.0.dll,而軟件B版本2.5中包含許可證2.0,它與License1.0.dll具有不同的方法和/或參數,它只會加載1.0,然後引發異常軟件B,因爲它無法找到正確的許可證方法。
在最初的研究中,GAC似乎是爲了解決這個問題的答案,並且好幾個網站似乎都這樣說,但是我也發現this subject和答案中的鏈接似乎在說沒有不使用GAC爲此。
我很困惑。有人可以直接指導我是否應該考慮使用GAC嗎?
我想你會遇到更多使用GAC的問題。聽起來像應用程序應配置爲指向正確的版本DLL,通過配置文件中的程序集重定向或通過在編譯時設置引用上的特定路徑。我不確定並且非常有興趣看到答案是什麼。 – TyCobb 2014-11-03 23:43:15
不幸的是,我無法控制父應用程序,但從我的理解是加載.NET程序集的單個應用程序的標準行爲。 I.E.如果我有3個獨立的應用程序運行它將加載到單獨的域,並沒有問題,但由於我的3個應用程序加載在單個應用程序(和它的域)下,它只加載它的一個副本。再次,我在這方面相當新,所以我可能是錯的,但這是我的理解...... – sfaust 2014-11-03 23:57:35
呃,考慮到主機似乎負責部署,這不是由你來做出這種改變。敏感的問題,相當令人懷疑的是,任何人都會鬆開手指,讓您輕鬆執行許可證。您所能做的就是讓他們輕鬆回到GAC解決此問題。這很簡單,只要確保它名字很有名。你可能應該考慮編寫一個安裝程序。 – 2014-11-04 00:11:06