我有一个自定义任务程序集,它运行在BeforeBuild。
对于原始项目的某些cs文件,我生成了一些gen.cs文件。
我想构建gen.cs文件而不是原始的cs文件。
这是否可以完成任务。
用Google搜索,但没有提示......
答案 0 :(得分:1)
不是将原始 .cs 文件的构建操作设置为编译,而是将其设置为YourCustomAction
。下面是一个示例目标文件,显示如何将 Antlr4 的构建操作的输入转换为C#文件,然后将这些C#文件编译为项目的一部分。如果您没有使用ReSharper,则此项目中的模式甚至可以在Visual Studio中为您提供无缝的IntelliSense支持(您不需要构建项目,以便IntelliSense找到并处理生成的文件)。
答案 1 :(得分:0)
我将任务从BeforeBuild移到了AfterBuild。我创建了一个csproj的副本,我随意操作它并重建它。它是最有效的解决方案,但它没有并发症。
答案 2 :(得分:0)
我已经迟到了,但想要回应你原来的概念。
您不需要修改.csproj。在你的.csproj中,你会在@(编译)ItemGroup中看到许多与.cs文件相对应的项目。
<Compile Include="myfile.cs" />
现在你有custom task使用它作为模板来生成myfile_gen.cs,而你想要编译它。
创建target after your custom cs_gen targe,它将移动到@(编译)集合,并用* _gen.cs模拟替换成员。
<Compile Include="myfile_gen.cs" Exclude="myfile.cs" />
这将在编译时动态修改输入,你不会成为spinning up behind the scenes MsBuild work like is done behind the scenes with WPF and Silverlight projects。