2010-06-30 19 views
0

我正在通過在ASP.NET網站項目中安裝N2內容管理框架。爲什麼在你的項目中創建一個文件夾來保存你引用的dll?

http://n2cms.com/Documentation/Content-enabling%20an%20existing%20site/The%20first%20content%20class.aspx的說明建議我創建一個lib文件夾來存放所需的dll。下一步要求我引用那些相同的dll - 這可能會將它們添加到bin文件夾中!因此我的項目將包含dll的重複副本。

任何人都可以建議爲什麼這個建議已經作出?

感謝

大衛

回答

2

該項目將不包含重複。 bin文件夾是輸出的地方,但它不被視爲您實際項目的一部分,也不會被檢入到源代碼管理中。

通過將DLL放在lib文件夾中,可以更輕鬆地將它們分發給應用程序的源代碼,並確保獲取代碼副本的任何其他人,無論是將它發送給他們,還是從他們抓取它源代碼管理,有必要的DLL來運行應用程序。它還確保它們使用的是您用於創建軟件的組件的相同版本。如果DLL需要授權,它可能會是一個不同的故事,因爲任何想要編譯該項目的人都需要授權組件來安裝其工作站上安裝的DLL。

基本上,我看到的主要好處是它可以讓您的代碼在同一個地方使用所有組件,從而使您的項目成爲一個整體單元。

+0

因此,如果您將dll添加到項目中的文件夾,然後引用它,它不會被複制到bin中? – David 2010-06-30 12:49:47

+0

它仍然被複制到Bin。但是,當您將代碼提交到源代碼管理或將其分發給其他人時,通常不包含bin文件夾。 Bin文件夾是一個輸出文件夾。儘管在項目編譯時項目最終位於bin文件夾中,但不應直接從bin文件夾引用任何內容,因爲它是易失性的,並且一直由VS編譯器覆蓋。 – NYSystemsAnalyst 2010-06-30 13:03:09

+0

好的,我明白,謝謝。 – David 2010-06-30 13:05:43

1

如果您將DLL添加到bin文件夾中,那麼有一天決定將clean刪除您的項目,它們將消失...因此,將您的參考DLL保存在bin文件夾之外是一個好習慣。

實際上有很多方法可能會意外地從bin文件夾中刪除DLL。只要將bin文件夾視爲一個臨時位置,其內容可以立即刷新。

在構建過程中,所有相關文件都將被複制到bin文件夾中,包括配置文件,標記爲複製到輸出文件夾的內容文件,以及標記爲Copy Local的任何引用的DLL。

如果重複的位置打擾你,你可以保持在另一個文件夾中的DLL文件,只是添加到當前的AppDomain的PrivateBinPath,這將確保他們得到加載無需Copy Local屬性包含文件夾路徑。

相關問題