2011-01-25 20 views
1
所有裝配引用

是否有可能有一個自動拾取父項目的所有程序集引用(和它們的依賴)T4模板?自動獲得在T4

我看過的所有例子都使用<#@ assembly#>或<#@ VolatileAssembly#>手動定義引用,所以例如我最終必須在項目和模板中引用System.Core。我想避免這種重複:我只想在項目中定義引用,而不是模板。

這還應該添加對項目本身的引用,允許在模板中引用其他程序集,並在需要時進行卷影副本以避免程序集鎖定。

看來this was possible before VS2010,是否有可能重新實施/恢復該行爲?

回答

1

T4 VS2010之前確實拿起項目的依賴。我們故意選擇從運行時引用中分離出設計時引用,以便分離這些問題並更好地支持在模板中使用.Net 4.0,即使它們被用於爲.Net 2.0項目生成代碼。

你可以做一些類似於pre-VS2010的東西,方法是製作一個自定義指令處理器,它使用Host作爲ServiceProvider來獲取DTE,然後通過解決方案/項目來找到它們的引用。儘管如此,這將是相當多的工作。

我很想知道您的項目依賴關係與您的模板所需的依賴關係的關係。例如,使用WinForms的項目通常不需要在其模板代碼中使用WinForms。像System.Core這樣的基礎知識通常都在兩者中,但共享集似乎並不常見,因此重複並不是一個重大問題。

你有一個大的共享設置?

+0

我想用T4構建一個輕量級的DSL(文本類型,不是在DSL DSL工具中使用的圖形類型),而且我必須分析和操縱正在使用的表達式的類型(可以是任何在項目中引用的類型),所以是的,這是一個很大的共享集... – 2011-01-26 02:36:51