作为构建过程的一部分,我需要在预构建时替换c#项目中的一些代码。我希望在.csproj
文件中有一些钩子可以指定。我正在使用Rider。这篇文章似乎是关于我需要什么;https://learn.microsoft.com/en-us/visualstudio/ide/reference/pre-build-event-post-build-event-command-line-dialog-box?view=vs-2019,但我不知道如何在.csproj
中使用它。
如何在c#中指定预构建操作?
您可以在csproj中定义BeforeBuild目标来运行命令。举个例子,我有一个想要运行的PS脚本:
<Target Name="BeforeBuild">
<Exec Command="$(PowerShellExe) -NonInteractive -executionpolicy Unrestricted
-command "& invoke-command -scriptblock {
&'$(ScriptLocation)'
'$(LogFileLocation)'
'$(MSDeployComputerName)'}
""/>
</Target>
请参阅文档。
在.csproj
内部,您可以添加以下内容:
<PropertyGroup>
<PreBuildEvent>start %25comspec%25</PreBuildEvent>
</PropertyGroup>
在这种情况下,这只会启动cmd窗口,但您可以替换它。您也可以将它放在要使用的属性组中。参见文档
此外,我还想特别注意预处理器指令#if。当你想替换DEBUG代码时,它只应该出现在DEBUG环境中,并且是一个静态替换,这会更容易。