2010-09-09 3 views
2

Je me demandais juste si quelqu'un avait réussi à faire fonctionner Spark dans une application de console .NET 4.0 pour compiler des modèles au format HTML. Malheureusement, je reçois l'erreur suivante:Spark dans une 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. 

Cependant, quand je cible .NET 3.5 tout fonctionne bien, mais je souhaite cibler spécifiquement 4.0. Est-ce que quelqu'un a résolu ce problème, certains anciens threads sur la liste de diffusion Spark suggèrent que je devrais juste éditer une ligne dans la source, et recompiler, mais j'espère que c'est un dernier recours.

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]"); 
     } 
    } 

Répondre

1

Je ne considère pas un dernier recours. J'ai changé la ligne n ° 60 src \ Spark \ compilateur \ BatchCompiler.cs à

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

était à l'origine

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

Après une recompilation et faisant référence à la nouvelle tout Spark.dll a fonctionné comme un charme. euh, euh, j'ai pu passer à l'exception suivante.

+0

Et puis quand vous obtenez des erreurs avec une méthode HTML manquant sur votre SparkView vous pouvez ajouter une méthode HTML() à votre SparkView.cs ... objet public HTML (objet value) {return value.ToString(); } – devSolo

+0

Et rappelez-vous, vous n'êtes pas * forcé * de passer un XDocument à votre vue. Vous pouvez le changer en n'importe quel objet tant que vous le lancez correctement dans la vue. – devSolo

+0

Les tests unitaires fonctionnent-ils déjà pour Spark après ces changements? Je ne peux pas, bien qu'il semble qu'il ne s'agisse que d'un problème de chargement d'assemblages, que NUnit apporte des éléments de base v2 et que Spark échoue alors à apporter des éléments de base v4 lorsqu'il essaie de rendre. –

2

Un correctif pour cela a maintenant été ajouté à la branche maître Spark principale. Vous pouvez soit télécharger la source et compiler les derniers fichiers binaires, soit utiliser NuPack/NuGet pour ajouter une référence à votre solution dans VS2010, car les fichiers binaires seront maintenus à jour à partir de maintenant.

espoir qui aide ...

Questions connexes