簡體   English   中英

在VS擴展中的預處理T4模板中訪問VS的ITextTemplatingEngineHost

[英]Accessing VS' ITextTemplatingEngineHost in Preprocessed T4 Template in a VS Extension

我嘗試遵循以下示例:

http://msdn.microsoft.com/en-us/library/gg586947.aspx

並嘗試找出如何重構以下現有代碼,以便我們可以使用VS的ITextTemplatingEngineHost。

        template.DatabaseObjectNameWithSchema = databaseObjectName;
        template.Database = database;
        template.Namespace = templateNamespace;
        template.Dialect = dialect;

        template.Host = ???

        return template.TransformText();

我可以獲得模板服務和會話主機:

        ITextTemplating t4 = serviceProvider.GetService(typeof(STextTemplating)) as ITextTemplating;
        ITextTemplatingSessionHost sessionHost = t4 as ITextTemplatingSessionHost;

但是,我終生無法解決如何獲取Engine主機的問題……

聽起來您正在嘗試獲取以下接口:ITextTemplatingEngineHost。 如果是這樣,您可以嘗試以下代碼:

STextTemplating vsHost = (STextTemplating)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(STextTemplating));
var vsHostEngine = vsHost as ITextTemplatingEngineHost;

要完全了解T4模板的工作原理,可以使用反射器之類的工具並查看源代碼。 在您的計算機上搜索名為Microsoft.VisualStudio.TextTemplating.VSHost.11.0.dll或類似名稱的文件,不確定是否使用了哪個版本的Visual Studio。 如果您在反射器中打開該文件並進行研究,您應該能夠找到所需的任何答案。

暫無
暫無

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

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