我正在尝试恢复我在 vs 2008 中使用的旧 f# 解析器项目以使用 vs 2013。它使用 FsLexYacc。
我通过使用预构建步骤使其构建正常,如下所示:
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 解决方案中,如果可以,如何?