2010-09-09 4 views
2

Мне просто интересно, смог ли кто-нибудь успешно запустить Spark в консольном приложении .NET 4.0 для компиляции шаблонов в HTML. К сожалению, я получаю следующее сообщение об ошибке:Spark in the Console Application Targetting .NET 4.0

Unhandled Exception: Spark.Compiler.CompilerException: Dynamic view compilation failed. 
(0,0): error CS1703: An assembly with the same identity 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' has already been imported. Try removing one of the duplicate references. 

Однако, когда я предназначаться .NET 3.5 все работает нормально, но я определенно хотел бы предназначаться 4.0. Кто-нибудь решил эту проблему, некоторые старые потоки в списке рассылки Spark предполагают, что мне просто нужно отредактировать строку в источнике и перекомпилировать, но я надеюсь, что это последнее средство.

EDIT:

static void Main(string[] args) 
    { 
     if (args.Length > 0) 
     { 
      var templatePath = Path.Combine(Environment.CurrentDirectory, args[0]); 
      var templateName = Path.GetFileName(templatePath); 
      var templateDirPath = Path.GetDirectoryName(templatePath); 
      var viewFolder = new FileSystemViewFolder(templateDirPath); 

      var sparkEngine = new SparkViewEngine 
      { 
       DefaultPageBaseType = typeof(SparkView).FullName, 
       ViewFolder = viewFolder.Append(new SubViewFolder(viewFolder, "Shared")), 
      }; 

      var descriptor = new SparkViewDescriptor().AddTemplate(templateName); 
      var view = sparkEngine.CreateInstance(descriptor) as SparkView; 

      view.Model = args[1]; 

      using (var writer = new StreamWriter(new FileStream(args[2], FileMode.Create), Encoding.UTF8)) 
      { 
       view.RenderView(writer); 
      } 
     } 
     else 
     { 
      Console.WriteLine(">>> error - missing arguments:\n\tSparkCompiler.exe [templatepath] [modelstring] [outputname]"); 
     } 
    } 

ответ

1

Я не считаю это последним средством. Я изменил Line # 60 ЦСИ \ Спарк \ Compiler \ BatchCompiler.cs к

var providerOptions = new Dictionary { { "CompilerVersion", "v4.0" } };

он был первоначально

var providerOptions = new Dictionary { { "CompilerVersion", "v3.5" } };

После перекомпиляции и ссылающийся на новый Spark.dll все работало как шарм. er, um, я смог перейти к следующему исключению.

+0

И тогда, когда вы получаете ошибки с отсутствующим методом HTML на вашем SparkView вы можете добавить метод HTML() для вашего SparkView.cs ... публичный объект HTML (объект value) {return value.ToString(); } – devSolo

+0

И помните, что вы не * принудительно * передаете XDocument для своего вида. Вы можете изменить его на любой объект, пока вы его соответствующим образом нанесете в представлении. – devSolo

+0

Вы когда-нибудь получали модульные тесты, работающие на Spark после этих изменений? Я не могу, хотя кажется, что это может быть только проблема с загрузкой сборки, где NUnit приносит основной материал v2, а Spark затем не вносит в основной материал V4 при попытке визуализации. –

2

Исправление для этого теперь добавлено в основную ветвь Spark. Вы можете загрузить исходный код и скомпилировать последние бинарные файлы, или вы также можете использовать NuPack/NuGet, чтобы добавить ссылку на свое решение в VS2010, поскольку бинарные файлы будут обновляться с этого момента.

Надежда, что помогает ...

Смежные вопросы