我推遲使用生成的代碼作爲構建過程的一部分,因爲害怕它在構建過程中引入的複雜性。簡單和實用的C#代碼生成(VS 2008或2010)
是否有一種簡單的方法將構建時生成的代碼集成到應用程序中?
那種代碼我想的是類似的資源和設置文件的Visual Studio執行代碼生成:
- 有智能感知這裏是有價值
- 有很多的屬性以及用於描述的屬性之間的鏈接,但不可能在C#中簡潔地實現。
- 底層資源是可修改的,代碼自動重新生成,無需任何用戶交互,也無需理解生成器的內部結構。
對於(非真實世界)例如考慮生成的訪問經由類似命名的C#屬性(或方法)一個正則表達式的命名捕獲基團的預編譯。這是我想要生成的各種事情的典型代碼:樣板化包裝器的長片段,其主要功能是啓用編譯時檢查錯誤(在上面;訪問不存在的捕獲組或寫入和無效的正則表達式)不重要的是,這些屬性的智能感知。最後,這個設置應該可以被團隊上的其他人輕鬆使用,只有最少的學習曲線。即,要求手動干預來重新生成代碼是絕對不可接受的,也不能接受將生成的代碼提交到源代碼控制中。最糟糕的是,每個人都應該只需要安裝一些擴展;理想情況下,擴展應該可以安裝到源代碼樹中,以便任何檢出樹的人都可以在沒有任何介紹的情況下構建項目。
對於工作得很好,它的關鍵,將IDE集成是優秀的:更新底層的「資源」定義文件應觸發代碼的再生無需任何用戶交互,最好發電機本身便很容易以後爲其他開發人員維護(即發電機調試能力有一定優勢)。
最後,一種類似XSLT的方法,其中相同的模板可以應用於各種輸入資源是理想的;因爲這意味着如果你想要做的只是更新資源,並且因爲它使模板重用變得微不足道,你甚至不需要查看實際的生成器代碼。
我已經看過T4,但從我看到的這個有一個不太方便的類似於ASP的方法,其中模板和資源沒有乾淨地分割(即,生成器負責查找資源的 - 這使得模板重用變得不那麼容易)。
是否有更好的(更乾淨的)解決方案或運行T4的某種方式,使得相同的模板可以被平凡重用,並且(很像.NET設置文件),任何資源更新都會自動觸發重新實現碼?
摘要:(!不是模板) 我正在尋找一個代碼生成方式,可以自動
- 重新生成代碼,而無需開發干預時資源根本的變化。
- 維護起來有點簡單
- 能夠在幾個資源之間共享相同的生成器模板(其中,#1號點可能意味着資源應該引用生成器而不是反之亦然)。
謝謝,我一定會嘗試一下,看看它的效果如何! – 2009-11-12 14:49:25