.net 4.0 针对.NET 4.0的控制台应用程序中的Spark

.net 4.0 针对.NET 4.0的控制台应用程序中的Spark,.net-4.0,console,spark-view-engine,.net 4.0,Console,Spark View Engine,我只是想知道是否有人成功地让Spark在.NET4.0控制台应用程序中工作,以便将模板编译为HTML。不幸的是,我遇到以下错误: 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=neutr

我只是想知道是否有人成功地让Spark在.NET4.0控制台应用程序中工作,以便将模板编译为HTML。不幸的是,我遇到以下错误:

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.
然而,当我以.NET3.5为目标时,一切都很好,但我特别希望以4.0为目标。如果有人解决了这个问题,Spark邮件列表上的一些旧线程建议我可能只需要在源代码中编辑一行,然后重新编译,但我希望这是最后的手段

编辑:


我不认为这是最后一招。我将src\Spark\Compiler\BatchCompiler.cs的第60行更改为

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

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

在重新编译并引用新的Spark.dll之后,一切都很顺利。呃,嗯,我可以继续处理下一个异常。

现在已将此问题的修复添加到主Spark主分支。您可以下载源代码并编译最新的二进制文件,也可以使用NuPack/NuGet在VS2010中添加对解决方案的引用,因为从现在起,那里的二进制文件将保持最新


希望这对您有所帮助……

然后,当您在SparkView上发现缺少HTML方法的错误时,您可以在SparkView.cs中添加一个HTML()方法。。。公共对象HTML(对象值){return value.ToString();}请记住,您不必向视图传递XDocument。只要在视图中适当地强制转换它,就可以将其更改为任何对象。在这些更改之后,是否让单元测试为Spark工作?我不能,尽管这似乎只是一个程序集加载问题,NUnit引入了v2核心内容,Spark在尝试渲染时未能引入v4核心内容。
var providerOptions = new Dictionary { { "CompilerVersion", "v3.5" } };