在VS 2008 SDK中使用文本模板引擎时出现“未找到入口点”错误

时间:2009-03-27 16:57:50

标签: visual-studio-2008 t4

我正在使用VS 2008 SDK中的Microsoft.VisualStudio.TextTemplating.Engine类以及Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates命名空间中的对象来自动化从T4模板创建C#类的过程。

这是我的代码。它直接取自Oleg Sych's Blog ...

上的示例
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using Microsoft.Practices.RecipeFramework.VisualStudio.Library.Templates;
using Microsoft.VisualStudio.TextTemplating; 

namespace PropertyDirectivePot
{
  class Program
  {
    static void Main(string[] args)
    {
      // Prepare template parameters
      var arguments = new Dictionary<string, PropertyData>();
      arguments.Add(“MyProperty”,
        new PropertyData(Color.AntiqueWhite, typeof(Color))); 

      // Initialize GAX template host
      string currentDirectory = Directory.GetCurrentDirectory();
      TemplateHost host = new TemplateHost(currentDirectory, arguments);
      host.TemplateFile = Path.Combine(currentDirectory, “PropertyTest.tt”); 

      // Transform template
      string template = File.ReadAllText(host.TemplateFile);
      ITextTemplatingEngine engine = new Engine();
      string output = engine.ProcessTemplate(template, host); 

      // Save output
      string outputFile = Path.ChangeExtension(host.TemplateFile, “.txt”);
      File.WriteAllText(outputFile, output);
    }
  }
}

问题

我在处理模板时会得到一个System.EntryPointNotFoundException,并且应该返回输出代码文件......

string output = engine.ProcessTemplate(template, host);

此异常表明我的某个组件版本不匹配,googling已经发现其他人遇到过这个问题,但我使用的组件版本较旧。我的版本是......

Visual Studio SP1 9.0.30729.1
Microsoft.VisualStudio.TextTemplating 9.0.0.0
Microsoft.Practices.RecipeFramework.VisualStudio.Library 1.4.0.0

我有最新版本的GAX,GAT和VS2008 SDK(今天全部下载并安装)。

有没有人知道发生了什么,或者我如何进一步调查?

我真的想避免在可能的情况下开始使用跟踪器来跟踪调用堆栈:(

1 个答案:

答案 0 :(得分:1)

找到答案......

我引用了错误版本的Microsoft.VisualStudio.TextTemplating程序集。

我的机器上安装了两个版本......

  • 8.1.0.0
  • 9.0.0.0

我使用的Microsoft.Practices.RecipeFramework.VisualStudio.Library的特定版本需要两个版本中的较早版本。