2012-04-01 53 views
1

episerver安裝將episerver程序集放到GAC中,我用C:/ windows/assembly看到它們。哪些dll被epowerver項目使用?

此外,episerver安裝後,所有episerver dll都會出現在C:/ Program files/Episerver中。

當通過episerver部署中心或Visual Studio 2010使用episerver模板創建episerver項目時,我發現新創建的項目的bin文件夾中包含很多episerver-dll,這並不令人驚訝。我想他們是從C:/ Program files /複製的。如果我在Visual Studio中打開該項目,我會發現它是那些被引用的dll,而不是來自GAC或C:/ program files/episerver的dll。

好吧,這一切都很混亂。 爲什麼Episerver把dll放在gac中而不是引用它們?處理episerver dll在團隊中的發展的最佳方式是什麼?

此外,如果episerver會引用來自GAC的ddl,我將如何看到VS.我的意思是,參考文獻的性質是什麼?

回答

2

基本上,這只是episerver部署的決定。我會盡力逐一回顧您的每一個問題:

  1. 當您希望用戶從「.NET Framework」選項卡訪問參考對話框中的dll時,將dll放入GAC非常有用。假設你正在創建一個簡單的項目(而不是epowerver項目)並且想要添加episerver dll。而不是在硬盤上查找它們,而是引用GAC指出的那些。這很容易進行開發。
  2. 爲什麼不參考GAC dll?這是更容易與dll部署您的解決方案。假設您正在將解決方案部署到服務器。服務器不會在GAC中擁有episerver dll(反正也不應該有)。所以他們可能會設置「copy local = true」屬性來將dll複製到輸出文件夾中,從而使您的解決方案變得可移植。此外,GAC程序集並未「引用」 - GAC僅在需要的情況下包含副本,並將引用添加到帶有dll的「程序文件」文件夾中。
  3. 開發團隊的最佳方式是使用GAC或在存儲庫中定義某種「第三方」(「外部」)文件夾,並將您的dll放在那裏(並從那裏引用)。第一種方法需要在每臺開發機器上安裝episerver,其次是在存儲庫中佔用一些空間。
  4. 由於GAC程序集不能被引用(它們實際上可以是,但它很頭疼),結果之間幾乎沒有區別 - 只有不同的路徑。
+0

感謝您的回答,但第1點和第4點對我來說似乎是矛盾的。另外,在VS中,我沒有看到.NET選項卡上的episerver dll,因此第4點可能是正確的說法。而第3點似乎也與第4點相矛盾,或? – staccata 2012-04-01 13:12:13

+0

關於第2點:Episerver似乎需要在生產服務器上安裝episerver,因爲在episerver.config中有類似physicalPath =「C:\ Program Files(x86)\ EPiServer \ CMS」的引用,這是因爲CMS不在webroot下,但在中心位置,這對我來說似乎不是很乾淨,但我明白它有它的優點。 – staccata 2012-04-01 13:15:24

+0

這可能是我可憐的寫作:) Pp。1和4 - 是的,這是我的錯誤 - GAC的程序集不會進入.net選項卡。第3頁和第4頁 - 沒有任何關係。當我在第3頁中說「使用GAC」時,我的意思是使用episerver安裝(將庫安裝到GAC中)。 GAC適用於部署/使用 - 您不必將.dll文件包含在輸出文件夾中,.NET將在GAC中找到參考。 – 2012-04-01 14:45:50

2

我們通常創建一個單獨的目錄,我們將存儲所有.dll文件並從該目錄引用它們。這意味着所有第三方圖書館和episerver-dll。 這樣做的最大原因是爲了避免新開發人員需要設置項目時的麻煩,並且避免在從GAC引用時在不同版本之間發生衝突。