无法使用查找助手编译模板 - 签名或安全透明度不兼容

Cannot compile template with Lookup helper - signature or security transparency is not compatible

我正在尝试在使用 .NET Core 2.1 和 Handlebars.Net 1.9.5

的控制台应用程序中使用以下模板 (TestTemplate)

<html>
<head>
    <title>A title</title>
</head>

<body>
    {{ > (lookup TemplateName)}}
</body>
</html>

因此带有 {{ > (lookup TemplateName)}} 的行给我带来了问题。

想法是使用部分名称,稍后将通过传递 TemplateName 变量解析部分名称。

但是,当我尝试使用

编译模板时
var foo = Resource1.TestTemplate;
Handlebars.Compile(Encoding.UTF8.GetString(foo));

我得到以下异常:

System.ArgumentException: 无法绑定到目标方法,因为它的签名或安全透明度与委托类型不兼容。 在 System.Reflection.RuntimeMethodInfo.CreateDelegateInternal(类型 delegateType,对象 firstArgument,DelegateBindingFlags bindingFlags) 在 HandlebarsDotNet.Compiler.SubExpressionVisitor.GetHelperDelegateFromMethodCallExpression(MethodCallExpression helperCall) 在 HandlebarsDotNet.Compiler.SubExpressionVisitor.VisitSubExpression(SubExpressionExpression subex) 在 System.Linq.Expressions.ExpressionVisitor.VisitUnary(一元表达式节点) 在 System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor 访问者) 在 System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor 访问者,IArgumentProvider 节点) 在 System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression 节点) 在 System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor 访问者) 在 System.Linq.Expressions.ExpressionVisitor.VisitUnary(一元表达式节点) 在 System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor 访问者) 在 System.Linq.Expressions.ExpressionVisitor.VisitConditional(条件表达式节点) 在 System.Linq.Expressions.ConditionalExpression.Accept(ExpressionVisitor 访客) 在 System.Dynamic.Utils.ExpressionVisitorUtils.VisitBlockExpressions(ExpressionVisitor 访问者,BlockExpression 块) 在 System.Linq.Expressions.ExpressionVisitor.VisitBlock(BlockExpression 节点) 在 System.Linq.Expressions.BlockExpression.Accept(ExpressionVisitor 访客) at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, Expression parentContext, String templatePath) --- 内部异常堆栈跟踪结束 --- at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, Expression parentContext, String templatePath) at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, String templatePath) --- 内部异常堆栈跟踪结束 --- at HandlebarsDotNet.Compiler.FunctionBuilder.Compile(IEnumerable1 expressions, String templatePath) 在 HandlebarsDotNet.Handlebars.HandlebarsEnvironment.Compile(字符串模板)

我希望有人有想法,因为我已经搜索了很长时间。

好吧,我完全错过了我正在查看 HandleBars.js 文档。

在 HandleBars.js 中,查找助手是内置的,但到目前为止,它还没有出现在 .net 版本中。

所以你必须自己声明查找助手,在我的例子中是这样的:

Handlebars.RegisterHelper("lookup", (output, context, arguments) => { output.WriteSafeString(arguments[0]); }); 

希望能帮到别人。