2010-11-23 69 views

回答

62

OpenWrap是一個開源項目,在應用程序中提供依賴管理,不僅在構建時,而且在運行時也是如此。因此,我們的功能主要針對動態解析依賴關係,無論是複合WPF應用程序,Web應用程序開發還是系統級應用程序。這使得我們的實現與NuGet的實現非常不同。

所以這裏是不同的東西(我可能會忘記很多,但啊)。

  • 在Visual Studio中無依賴,並專注於在命令行的生產力,而不是在UI
  • 在PowerShell中沒有任何依賴,OW帶有自己的指揮系統,可以讓你開發,部署和執行你的自己的命令,無論是從我們的shell(o.exe工具)還是從MSBuild本身。
  • OpenWrap使用OpenWrap來構建和部署自己,並且在每一步的xcopy友好。
  • 有包的全系統的資源庫,這樣你就可以部署工具命令一次,而不是每個解決方案
  • 在運行時支持動態依賴解析,應該要做到這一點
  • 有一個可擴展的封裝格式,所以你可以在一個包中創建新類型的依賴關係,並有OpenWrap幫助你使用它們在你的應用程序
  • 同時支持OpenWrap包和的NuGet包和存儲庫
  • 住從XML和OData的併發症得好遠,而只是以簡單的基於文本的DSL,易於學習和快速學習
  • 支持集成構建,這樣你就可以建立和打包在一個解決方案中去
  • 支持網絡共享,你可以從openwrap殼或MSBuild任務
  • 提供的依賴練級發佈到定製庫,自動選擇其中包的版本組合解決
  • Resharper集成意味着您對您的依賴關係所做的任何更改都會實時反映在VS中
  • TeamCity集成意味着您可以使用完全相同的流程構建,打包和部署包,從MSBuild腳本或從命令行
  • 名擴展建設者意味着你可以改變如何構建的OpenWrap
  • 支持內觸發測試運行和運輸試驗一起包
  • 用途支持的MSBuild擴展點包括裝配引用,並留下你一個人建的代碼。一旦你發佈了二進制文件,,你只有在構建時沒有openwrap代碼相關性

這只是爲了區別,因爲這就是你問到的,所以我不會打擾你與其他軟件包管理者一樣。

+3

openwrap.org(其主頁)被破壞,維基頁面被黑客攻擊,並且3年內沒有提交任何提交。在OSS世界中,這意味着某些事情正在**死亡**! – Mrchief 2015-06-02 21:23:53

+3

嗯,是的,但是你對11年前的帖子發表評論.Nuget工具贏了,沒什麼可看的,繼續前進。 – SerialSeb 2015-07-16 11:08:48

+2

那你不應該更新你的答案嗎?老實說,IDK爲什麼這個問題保持開放,它並沒有遵循SO指導原則。我添加了評論作爲幫助,以便它可以節省未來的訪問者時間。 – Mrchief 2015-07-16 11:12:28

57

只是想與來自NuGet方面的一些想法合作。 Seb留下了一些值得指出的細節。

  • 儘管我們的主UI基於VS,但NuGet核心組件與VS沒有任何關係。 ASP.NET Web Pages產品具有基於Web的包管理器。我寫了一篇博客文章,展示了使用NuGet構建一個在運行時自行更新的網站的例子。 http://haacked.com/archive/2011/01/15/building-a-self-updating-site-using-nuget.aspx
  • NuGet提供了一個強大的PowerShell控制檯。 NuGet包可以添加新的命令到控制檯。請參閱http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/。和以前一樣,這是NuGet的一個客戶端,而NuGet核心不需要它。
  • NuGet可通過VS擴展庫進行安裝,並且很容易立即開始使用。
  • NuGet支持將客戶端指向包含一組軟件包的目錄(或網絡共享)並自動將其視爲存儲庫。所以如果你不想處理OData,你不必這樣做。但是我們也包含了我們的圖庫的實現,所以在任何情況下都不需要手動處理OData/XML。
  • NuGet不要求您將NuGet的任何部分作爲應用程序的一部分進行部署。它始終保持關注,並專注於自動執行在沒有NuGet獲取和部署依賴關係的情況下執行的步驟。正如Seb指出的那樣,OpenWrap也不例外。我只是想說清楚,NuGet不需要這個。
17

NuGet的關鍵原則之一(和OpenWrap的一個重要區別)是它不會嘗試改變你的工作方式。相反,它可以使你現在已經做的事情變得更容易。

舉例說,你正在嘗試使用一個Foo庫,它依賴於一個Bar庫。今天,您必須手動查找這些庫,將它們複製到您的機器並添加對它們的引用。然後更新的版本會出來,你會通過類似的動作來獲得更新。

在這種情況下,NuGet和OW都可以輕鬆地引入這些引用,但關鍵的區別在於NuGet以完全非侵入的方式進行操作。即它將把二進制文件放到你的機器上,並以與手動完成相同的方式引用它們。完成之後,您的項目文件是完全「正常」的,在構建或運行時與NuGet沒有任何關係。

這意味着如果你通過NuGet獲得一些圖書館並將你的項目放在源代碼管理中,那麼另一個開發人員就可以使用你的項目而不需要NuGet了。

OpenWrap方法也有其優點,但要走這條路線,您必須願意一路使用OpenWrap,並且不能輕易遠離它。

還有很多其他的不同之處(比如NuGet中豐富的VS支持),但這是我認爲兩者之間最根本的區別。