我已经创建了点网核心dll项目。该项目的CS文件将是由工具(Apache Thrift编译器)生成的文件,但输出dll无法获取生成的文件。我添加了预构建集来生成文件。
复制步骤:
构建解决方案
使用对象浏览器打开ThriftSample.dll。 (删除生成的cs文件以及bin,com和obj文件夹。)
实际上:ThriftSample.dll中什么都没有
预期:生成的CS代码应该存在。
注意:我已经检查了CS文件的生成。随附示例项目。( https://onedrive.live.com/?cid=aef000afffca3540&id=AEF000AFFFCA3540%21144&authkey=!AAlMaW2IqIt6l1k )
答案 0 :(得分:0)
引用:Is there a .NET Core CLI pre before build task?
.NET SDK称其为“默认项目”是对项目文件进行静态评估的一部分-在运行任何目标之前。因此,您需要一个在需要@(Compile)项之前运行的目标。
诀窍是在运行自定义工具后包括添加到文件系统中的文件。这可以通过重新扫描所有文件并排除在构建之前运行的目标中项目中已经包含的那些文件来完成:
<Target Name="GenerateSomeFiles" BeforeTargets="BeforeBuild">
<Exec Command="dotnet my-tool" />
<ItemGroup>
<Compile Include="**/*$(DefaultLanguageSourceExtension)"
Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);$(BaseIntermediateOutputPath)**;$(BaseOutputPath)**;@(Compile)" />
</ItemGroup>
</Target>