18

我有生成cs文件的T4模板(mycode.tt)。我通常右键单击 tt 文件并选择 RunCustomTool,它在内部获取一个 xml 文件并为我生成代码。现在我想使用 ac# windows 应用程序运行自定义工具。所以点击一个按钮我想运行自定义工具。是否可以从 c# 运行 CustomTool。

编辑:

我有 2 个 tt 文件,其中一个没有代码隐藏 cs 文件。但是另一个附加了一个 .cs 文件,我正在从第一个 .tt 文件调用第二个文件的 TransformText() 方法。所以我需要调用第一个文件。所以我不能使用 TransformText() 方法。有没有办法动态调用 textTemplate 文件?

4

2 回答 2

18

当您使用 VS2010 时,您可以轻松实现它。如果您将新文件添加到项目中,请选择预处理的文本模板文件。您可以像往常一样编辑模板。该文件不是直接生成输出,而是生成正常生成的代码。我知道这听起来很混乱。但是您在输出文件中看到的是文本模板工具包生成的代码,用于获取您的输出(或多或少)。

这是一个名为“TestTemplate.tt”的预处理文本模板的简短示例,以及如何在代码中使用它:

tt文件:

<#@ template language="C#" #>
Some output.

代码:

using System;
using System.Diagnostics;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            TestTemplate testTemplate = new TestTemplate();
            Debug.Print(testTemplate.TransformText());
        }
    }
}
于 2011-01-24T11:57:13.230 回答
7

我会推荐@jb_ 上面回答的预处理路线。

作为替代方案,如果您需要在没有编译步骤的情况下仍可编辑模板以与自定义 C# 应用程序一起使用,并且该应用程序仅部署在 Visual Studio 旁边的计算机上,则可以编写自定义主机。

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

于 2011-01-25T01:49:36.847 回答