我有以下的设置(为了简洁起见,无关紧要的XML已被删除):
MyProject.fsproj
<Project ...>
<Import Project="MyTask.props" />
...
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
</Project>
MyTask.props
<Project ...>
<UsingTask XXX.UpdateAssemblyInfo />
<Target Name="UpdateAssemblyInfo"
BeforeTargets="CoreCompile">
<UpdateAssemblyInfo ...>
<Output
TaskParameter="AssemblyInfoTempFilePath"
PropertyName="AssemblyInfoTempFilePath" />
</UpdateAssemblyInfo>
<ItemGroup>
<Compile Include="$(AssemblyInfoTempFilePath)" />
</ItemGroup>
</Target>
</Project>
问题在于MyTask.props添加的ItemGroup被添加到了最后,尽管它是在项目一开始就导入的。我认为这是因为ItemGroup实际上并没有被导入,而是在运行任务时才被添加。
在F#中,这不是一个好的事情,因为文件顺序很重要 - 将文件包含在构建列表的末尾意味着无法构建EXE,例如(因为入口点必须在最后一个文件中)。
因此我的问题是 - 是否有办法让我输出一个ItemGroup作为目标的一部分,并使生成的ItemGroup排在第一位?