2013-02-24 57 views

回答

1

我想既不

以下是原因不把源代碼:

  • 開發人員可能修改代碼不慎
  • 庫通常如有更改

而且有2個原因DO包含解決方案的DLL:

  • 使部署更容易
  • 降低使用庫的不兼容版本
  • 減少丟失的參照

所以,機會如何的可能性有多大?

  1. 添加一個新的Class Library項目一個獨特的名字,說ClassLibrary1,在Build Events頁的解決方案

  2. Build頁面的項目設置,配置Output path應用輸出路徑

  3. ,請將以下行添加到Post-build event command line塊中:

    del "$(TargetPath)" 
    
  4. 外部DLL複製到它的文件夾,並把它們添加到ClassLibrary1

  5. 設置Copy Local引用到所有的true添加引用

  6. 設置其他項目,它的Project Dependancies,檢查ClassLibrary1

  7. 加參考其他項目,從DLL中放入的路徑ClassLibrary1

  8. 設置在其他項目中的所有這些附加的DLL Copy Localfalse

因此,項目ClassLibrary1您的解決方案的外部庫的中央控制。每當您Rebuild Solution,ClassLibrary1將添加到其References的最新DLL複製到應用程序輸出文件夾,並刪除它生成的名爲ClassLibrary1.DLL的DLL本身。而且,在編譯時或運行時應用程序都會使用相同版本的DLL,因此每次釋放應用程序時都不需要額外部署或檢查每個部署。

1

我想說的是,如果您在最新版本中獲得它,則可能會使用所提供的二進制文件,因爲源代碼可能不穩定。但是如果他們提供版本化的二進制文件,那麼他們很可能已經過測試並且很穩定。

這也取決於您是否剛開箱即用或是否要修改它。

0

二進制文件:

  • 更穩定,除非你是銘記拉源
  • 容易的發佈版本的

來源:

  • 可以修改
  • 可以調試通過直接進入源代碼來使用API

最後一點往往是重要的,所以要準備下載並在你的IDE打開源,即使你開始時只有二進制文件,特別是如果你正在使用的庫是年輕或虐待測試。

1

通常我會針對二進制文件進行編譯。我在我的解決方案上有一個文件夾供應商/庫,或者我只使用NuGet,並編譯Againest Dll。

但是,有時我需要調試開源庫,當某些事情沒有按預期發生時。就在那時,我將鏈接到源代碼(僅用於調試)。

在生產時,我使用二進制文件,因爲代碼已經過很好的測試。

4

您應該使用二進制文件進行編譯。

原因很簡單:您的項目和第三方庫是不同的項目,並且在您自己的構建過程中編譯他人的庫可能會引入不必要的複雜性和項目依賴性。

某些庫要求您在環境中安裝一些工具和插件。

代替包括在構建過程的開放源代碼,通常我有一個依賴性或與二進制文件和源代碼都在Visual Studio溶液的根LIB目錄。當我想調試第三方代碼時,我只需打開另一個Visual Studio實例,然後將調試器附加到整個過程中。

認爲一些第三方開源庫很胖,也許你自己的代碼庫很小:因爲你添加了很多源代碼,你的構建過程會延遲很多,因爲你只是添加了無用的東西(代碼,插件....)。

我更喜歡將構建過程委託給庫的作者的原則,在我的情況下,我認爲自己是這樣的庫的使用者:我不需要每次重新編譯它。

啊,如果你打算修改源代碼,最好的做法應該是聯繫作者併發送給他/她補丁,以便他/她可以將其包含在官方發行版中。如果沒有,你知道:每次筆者發佈一個新版本,你必須合併與自己的變化,新的源代碼的額外工作...

0

奧卡姆的剃鬚刀說,如果你不需要修改庫,你應該使用二進制文件。

相關問題