ANTLR MSBuild错误:"来源"不支持重复项目。参数

时间:2017-09-05 09:14:09

标签: c# visual-studio-2017 antlr4

我发布此部分原因是因为我想了解更多有关MSBuild的信息,部分原因是希望其他人不会花费尽可能多的时间来找到解决方案(google搜索错误文本对我的情况没有帮助。)

我最近升级到Visual Studio 2017.它偶尔会崩溃(随后每次加载特定的.sln时都会崩溃)。我的解决方法是在Visual Studio 2015中启动相同的.sln,编译(由于C#7功能而失败),之后Visual Studio 2017将正确加载解决方案。

这最终达到了令人无法接受的烦恼阈值。事件日志包含Visual Studio 2017崩溃条目,但有以下异常:

异常信息:System.IO.FileLoadException    在Antlr4.Build.Tasks.AntlrClassGenerationTaskInternal.HandleOutputDataReceived(System.Object,System.Diagnostics.DataReceivedEventArgs)

谷歌搜索显示需要升级到更高版本的ANTLR: https://github.com/tunnelvisionlabs/antlr4cs/issues/173

从4.3.0升级到4.6.4后,Visual Studio 2017不再崩溃,但我在构建时收到以下错误:

项目"(略)Lexer.cs"在"来源"中被多次指定参数。 "来源"不支持重复项目。参数。

ANTLR生成的* .cs文件在构建过程中被包含(至少)两次。在学习了许多不解决问题的方法后,我最终通过删除Antlr4.CodeGenerator.targets文件底部的以下行来解决问题:

<ItemGroup>
  <Compile Include="@(Antlr4GeneratedCodeFiles)" />
  <!-- The WinFX "GenerateTemporaryTargetAssembly" target requires generated code files be added here. -->
  <_GeneratedCodeFiles Include="@(Antlr4GeneratedCodeFiles)" />
</ItemGroup>

有人知道还包括构建中的那些文件吗? (这是我的问题)

(该项目包含WPF用户控件,中间&#34; g.cs&#34;等文件也位于IntermediateOutputDirectory中,并且必须包含在构建中,这是我最好的猜测。)

如果可以有条件地在构建中包含* .cs文件,则可能需要修改默认的Antlr4.CodeGenerator.targets文件。

0 个答案:

没有答案