2010-01-28 84 views
0

比方說我寫了SuperTest之上nUnit 2.1我想和世界分享我的創作。 Jess很樂意使用我的圖書館,她也希望直接使用nUnit。她的應用HeadBook使用NUnit的2.8分享開放源代碼.net庫

,我可以看到一個釋放的情景:

  1. 她檢查出SuperTest源所附帶NUnit的2.1,在NUnit的2.8份,重新編譯SuperTest,將SuperTest.dll複製到HeadBook中
  2. 她檢出不附帶nUnit但包含必須提供的引用的SuperTest源代碼。她在NUnit的2.8份,重新編譯SuperTest,副本SuperTest.dll到HeadBook

我看到一個二進制釋放的情景:

  1. 她下載SuperTest 1.0二進制文件,提出SuperTest.dll和NUnit 2.1到從GAC和引用SuperTest的GAC
  2. 她下載SuperTest 1.0二進制文件,複製到的dll和HeadBook重新編譯HeadBook與NUnit的工作2.1
  3. 她下載SuperTest 1.0二進制文件具有蜂ñILMERGED到一個DLL,副本到頭部和參考

我想解決設置這個項目的最佳方式。看起來最好的方法是包含一個nUnit副本,有一個本地引用和ilmerge作爲構建步驟。

我想避免SuperTest正在重新編譯不同版本的依賴我沒有測試過,但我可能也想避免gac,所以部署是無痛的。

ilmerge會是最好的方法嗎?

回答

0

我認爲最好的方法是嘗試遵循nUnit發行版,以便SuperTest始終與上游依賴關係同步。這樣,您就可以獲得與上游相匹配的源代碼發佈(SCM上的分支)和二進制發佈(只需構建一次),而且您不需要這些。

如果失敗了,即您無法承諾關注nUnit版本,我傾向於同意捆綁您自己的版本和合並程序集對每個人來說都是最簡單的。

0

簽署您的二進制版本。具有強名稱的程序集將根據需要並行加載正確的版本。然後你包含你正在使用的nUnit 2.1程序集的一個副本,並且你已經設置好了。