Я использую Razor Engine от CodePlex в консольном приложении. Когда я работаю в режиме отладки в VS 2010 IDE, все работает. Из оболочки даже простой 2-строчный код в примере на приведенной выше странице CodePlex дает сбой. Так что я не думаю, что это код. Сообщение об исключении настолько универсально, насколько это возможно:
RazorEngine.Templating.TemplateCompilationException: Unable to compile template.
Все библиотеки DLL, на которые ссылаются (в разделе «Ссылки»), находятся в рабочем каталоге вместе с .exe, который является самим консольным приложением. Я не буду помещать весь список здесь, но вот некоторые, которые я считаю уместными: System.Web , System.Web.Mvc , System.Web.Razor , RazorEngine и т. Д. Я не думаю, что такие библиотеки DLL, как System , System.Xml и т. Д., Даже должны быть там, но для устранения любых Сюрприз, я все равно скопировал их туда. Дело в том, что все, что находится в разделе «Ссылки», копируется в рабочий каталог, где находится исполняемый файл. Сюрприз в том, что он все еще не работает. Как я могу отследить, чего не хватает, или просто заставить эту вещь работать?
Редактировать Я только что создал консольное приложение без косточек, чтобы продемонстрировать свою точку зрения. Вот и вся программа. Как я уже говорил, он отлично работает внутри IDE, а не в оболочке.
using System;
using RazorEngine;
namespace RazorEngineTest
{
public class Program
{
public static void Main(string[] args)
{
string template = "Hello @Model.Name! Welcome to Razor!";
string result = Razor.Parse(template, new { Name = "World" });
Console.WriteLine(result);
Console.ReadLine();
}
}
}