如何在我的 .NET 项目传输到内存并构建之前 运行 PowerShell 脚本?

How to run a PowerShell script before my .NET project is transfered into memory and built?

我已经知道如何在构建开始前运行 任意 PowerShell 脚本。

<Target Name="BeforeBuild">
  <Exec Command="powershell.exe -executionpolicy bypass -command &quot;&amp; {.\script.ps1 '$(SolutionDir)'}&quot;" />
  <Sleep Delay="3000"/>
</Target>

我的问题是我想要 运行 的脚本修改了 .cs 文件的一部分。但是上面的脚本 运行s after 代码已经被复制到内存中,当它构建时,它使用 .cs 文件的内容 before 已修改。

有没有一种方法可以启动构建过程,但 运行 PowerShell 脚本更早,在我的代码被复制到内存之前? 你可以说我想要 运行 一个预处理器,它甚至可以在任何编译过程开始之前调用外部可执行文件。

如果没有,有没有办法连续两次构建项目,而不必在我的 IDE 中单击两次 Build? (可以解决我的问题的肮脏技巧)

关于 <Sleep Delay="5000"/> 的快速说明。因为我的 PowerShell 脚本正在启动一个异步且非常短的进程,所以我还添加了一个 Delay 任务,我发现它发布在这里:

BeforeBuild 目标发生在编译发生之后,所以你的代码到那时已经被编译了......为了实现所需的功能,你应该尝试使用 BeforeCompile 目标:

<Target Name="BeforeCompile">
  <Exec Command="powershell.exe -executionpolicy bypass -command &quot;&amp; {.\script.ps1 '$(SolutionDir)'}&quot;" />
  <Sleep Delay="3000"/>
</Target>

有关详细信息,请参阅 this Microsoft Docs link