MSBuild target should emit items and properties defined in ItemGroups and PropertyGroups even if the target is skipped because it is up to date. xbuild does not do this.
Here is a test case:
On xbuild, it outputs the message "Included!" the first time it runs, but not on subsequent runs.
On MSBuild, it outputs the message EVERY time it runs.
Unfortunately, xbuild's own GenerateTargetFrameworkMonikerAttribute target depends on this feature. This leads to TargetFrameworkAttribute being omitted from assemblies.
For now, I'd suggest it's easier just to hack GenerateTargetFrameworkMonikerAttribute to work.
PR to fix the TargetFrameworkAttribute issue by working around this limitation: https://github.com/mono/mono/pull/3431
We deprecated xbuild and recommend using msbuild instead. Switching to msbuild will also most likely resolve the issue you reported.