Я использую Razor Engine от CodePlex в консольном приложении. Когда я запускаю в режиме отладки в VS 2010 IDE, все работает. Из оболочки даже простая 2-строчная строка в примере на вышеуказанной странице CodePlex не работает. Поэтому я не думаю, что дело в коде. Сообщение об исключении настолько общее, насколько это возможно:
RazorEngine.Templating.TemplateCompilationException: Unable to compile template.
Все библиотеки DLL, на которые есть ссылки (в разделе References), находятся в рабочем каталоге вместе с .exe, который является самим консольным приложением. Я не буду приводить здесь весь список, но вот некоторые из них, которые я считаю уместными: System.Web, System.Web.Mvc, System.Web.Razor, RazorEngine, etc. Я не думаю, что DLL, такие как System, System.Xml и т.д. вообще должны быть там, но чтобы не было сюрпризов, я все равно скопировал их туда. Суть в том, что все, что находится в разделе References, копируется в рабочий каталог, где находится exe. Удивительно то, что он по-прежнему не работает. Как я могу выяснить, чего не хватает или просто заставить эту штуку работать?
Edit Я только что создал консольное приложение на голых костях, чтобы продемонстрировать свою точку зрения. Вот вся программа. Как я уже говорил, она работает нормально из 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();
}
}
}