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>
本文介绍了在Visual Studio中设置构建事件以在构建C# .NET Core项目前复制appsettings.Development.json.sample文件到appsettings.Development.json。当在Azure DevOps中使用Linux构建代理时,由于COPY命令不被支持导致构建失败。解决方案是利用MSBuild的Copy任务,将相关指令添加到.csproj文件中,实现跨平台的文件复制,确保在Debug配置下正确执行。
761

被折叠的 条评论
为什么被折叠?



