2011-07-18 55 views
20

我看過文章討論這兩個類似的框架,但大多數都是兩歲左右。我認爲這兩個項目現在比兩年前更成熟了,情況更加複雜。CCI與Mono.Cecil - 優點和缺點

因此,考慮到每個庫的當前狀態,我希望有人能夠提供每個庫的優缺點的詳細解釋,並且目前應該首選哪個庫。

+0

不確定爲什麼有2個關閉請求。這個問題完全有效。 – leppie

+0

爲何選票爲「不具建設性」?這個問題確實要求項目的事實和現狀,而不是「你更喜歡哪一個」。請不要是SO的刪除者;) – viraptor

+2

我也很好奇這個問題。一個很好的詳細答案比較兩個將不勝感激,所以我要在這裏設置賞金。 :-) – Noldorin

回答

12

CCI

優點:

  • 可以給你你的表現
  • 細粒度控制的最新版本是一個比較成熟的

缺點:

    (如果你是新來的IL /低層次的思考,像我和混亂)

塞西爾(指the newer git-hub version

優點

  • 對象模型比較複雜:

    • 具有更簡單的對象模型,因此會比較容易得到的

    缺點開始:

    • 最新的版本是不太成熟,所以有可用
    • 的API較少的代碼示例是一個工作正在進行
    • 你不會有超過名稱緩存儘可能多的控件(PERF)

    其中我會選擇

    couting的了優點/缺點,它肯定看起來像我會選擇CCI在塞西爾。但我不會。我們遇到的任何問題都可以輕鬆地進行調試。無論是在任何問題上進行調試都毫不費力。

    CCI編碼相當痛苦 - 基於接口的設計被採納得太。代碼很難通過調試。有些東西乍一看似乎很完整,但不是或者不能處理一個以上的用例。 The NameTable stuff讓我感到頭暈(比現在更多)。

  • +0

    我不記得了,但我也認爲CCI對高級代碼生成有更好的支持。此外,塞西爾的支持是好的/快速的:) –

    +0

    你能提供任何直接的證據支持這些評論嗎?另外,我對錶現很好奇。我的懷疑是塞西爾真的做了更多的工作。它似乎更多地用於開源項目。有什麼想法嗎? – Noldorin

    +0

    @Noldorin:這是我從七個半月前嘗試完成的軼事經歷。我在CCI獲得了半工作解決方案,並將其交給Cecil。是的,從那時起,塞西爾可能會做更多的工作。我記得我最糟糕的問題是:檢測*所有*依賴類型,確定基類型和執行代碼生成。我的項目是反映一個類型圖和code-gen類型的清理版本,使用列表而不是數組,可爲空類型等.CCI提供了自動(但不完整)的訪問者模式遍歷。我不認爲塞西爾做過。 –

    1

    塞西爾 - 因爲對我來說,社區對它的支持比CCI更好。我一直在找到更快捷的郵件列表/網站的答案。