The problem was that although I was clearing the destination directory on the Linux VM before copying over the files from the publish directory on my local machine, I needed to clear the files in the publish directory locally before running dotnet publish MyApp.csproj --os linux as it doesn't remove files which aren't needed.
Once I cleared it locally, published and copied the files over, the app was working again.
I've learnt something today which is always a good thing!