scenario: before build a C# .net core project, copy the appsetting.development.json.sample to appsetting.development.json if the latter doesn't exist.
In Visual Studio, we can easily add a Build Event:
IF $(ConfigurationName) == Debug (
IF NOT EXIST $(ProjectDir)appsettings.Development.json copy $(ProjectDir)appsettings.Development.json.sample $(ProjectDir)appsettings.Development.json
)
but the build will fail in Azure Devops if a linux build agent is picked, because copy is not a linux command.
solution: ms build provides a copy task, which is cross-platform Copy Task - MSBuild | Microsoft Docs
for the above task, add the following to .csproj file
<Target Name="CopyAppSettingsDev" BeforeTargets="Build" Condition="'$(Configuration)' == 'Debug' and !Exists('$(ProjectDir)appsettings.Development.json')">
<Copy
SourceFiles="$(ProjectDir)appsettings.Development.json.sample"
DestinationFiles="$(ProjectDir)appsettings.Development.json"
/>
</Target>