簡體   English   中英

以編程方式運行T4文本模板

[英]Run T4 text template programmatically

有沒有辦法從代碼中以編程方式運行T4文本模板? 我正在制作一個自定義域特定語言,我希望每次用戶保存時都會運行相關的文本模板。 目前,這就是我在DSL模型中所做的:

protected override void OnDocumentSaved(EventArgs e)
{
    IVsCommandWindow commandWindow = (IVsCommandWindow)this.ServiceProvider.GetService(typeof(IVsCommandWindow));
    if (commandWindow != null)
    {
        commandWindow.ExecuteCommand("TextTransformation.TransformAllTemplates");
    }
    base.OnDocumentSaved(e);
}

這有效,但它有一個非常討厭的副作用。 如果項目有多個DSL文檔,每個文檔都有相關的文本模板,那么它們將運行,而不僅僅是受給定DSL文檔更改影響的文檔。 這可能看起來不是什么大問題,但它會導致源代碼控制檢出所有生成的文件,如果你有很多文檔,那么轉換實際上可能需要很長時間。 謝謝你的幫助。

來自DSL團隊的Jean-Mark Prieur解釋了如何使用DSL Tools Lab第4部分中的自定義工具執行此操作。 您也可以使用ITextTemplating服務直接從DSL模型執行此操作。 更多關於模板轉換如何在這里工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM