【问题标题】:StringTemplate: Loading a Template from disk?StringTemplate:从磁盘加载模板?
【发布时间】:2010-06-11 15:40:15
【问题描述】:

我在 c# 中使用 StringTemplate 并使用以下代码从我的应用程序的子目录加载模板。

StringTemplateGroup group = new StringTemplateGroup("myGroup", "/tmp");
StringTemplate query = group.GetInstanceOf("Sample");
query.SetAttribute("column", "name");
Console.WriteLine(query);

我的应用程序的 tmp 目录中有一个模板文件 Sample.st。

我收到以下错误。

未处理的异常: System.ArgumentException:找不到 模板 Sample.st;组层次结构是 [我的组]

有人知道这里出了什么问题吗?

【问题讨论】:

  • 我在一台机器上遇到了和你一样的问题,但在另一台机器上没有。你想清楚了吗?
  • @randy:我使用了绝对路径。虽然我不喜欢使用绝对路径。
  • 我通过包含对 Antlr3.Runtime.Debug 程序集的引用解决了我的问题。
  • 在下面查看我的答案;您不需要添加对调试程序集的引用,只需简单的 Antlr3.Runtime.dll。

标签: c# .net stringtemplate


【解决方案1】:

也许您应该指定绝对路径作为StringTemplateGroup 构造函数的第二个参数?

【讨论】:

  • 是否可以从程序集中的嵌入文件加载模板?
  • 请参阅此处的“加载相对于程序集位置的模板”部分:antlr.org/wiki/display/ST/Defining+Templates
  • 不幸的是,即使给出了绝对路径,我也无法加载模板。
【解决方案2】:

除了添加对 Antlr3.StringTemplate 程序集的引用之外,您还需要添加对 Antlr3.Runtime 程序集的引用(不一定是 Antlr3.Runtime.Debug 程序集,尽管这也可以)。这对我有用。

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 2021-11-30
    • 2017-07-28
    • 2021-03-03
    • 2010-11-02
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多