我通过以下预构建步骤成功构建了它:
fslex --unicode "$(ProjectDir)XpathLexer.fsl"
fsyacc --module XpathParser "$(ProjectDir)XpathParser.fsy"
但这不是最理想的,因为它总是会执行,无论输入是否发生了变化。
然后我尝试只使用旧的MsBuild操作:
<FsYacc Include="XpathParser.fsy">
<FsLex Include="XpathLexer.fsl">
但在构建过程中,这些似乎被完全忽略了。是这样吗?这些构建任务已经被某种方式移除了吗?
然后我发现了一些在vs C++文档中记录的东西,我认为可能会起作用:
<CustomBuild Include="XpathParser.fsy">
<Message>Calling FsYacc</Message>
<Command>fsyacc --module XpathParser "$(ProjectDir)XpathParser.fsy"</Command>
<Outputs>$(ProjectDir)XpathParser.fs</Outputs>
</CustomBuild>
并且
<PropertyGroup>
<CustomBuildBeforeTargets>CoreCompile</CustomBuildBeforeTargets>
</PropertyGroup>
我检查了Microsoft.Fsharp.Targets文件,找到了“CoreCompile”目标。
然而,仍然没有成功。
有人能否解释一下是否真的可以将fslex/yacc正确地集成到vs 2013解决方案中,如果可以,如何实现呢?