I ran into this issue with the publishing pipeline (which produces a _PublishedWebsites directory), and used this as a Target in the project:
<Target Name="CopyRoslynCompilerFilesToPublishedWebsitesDirectory" AfterTargets="AfterBuild" Condition="Exists('$(OutDir)\_PublishedWebsites\$(TargetName)')"><Copy SourceFiles="@(RoslyCompilerFiles)" DestinationFolder="$(OutDir)\_PublishedWebsites\$(TargetName)\bin\roslyn" ContinueOnError="true" SkipUnchangedFiles="true" /></Target>
The downside is that there will be two copies of the Roslyn files in the output.