microsoft/MSBuildSdks

Microsoft.Build.Traversal ProjectReference built Platform mismatch

Closed this issue · 1 comments

In a csproj referencing a vcxproj may result in mismatched platforms being built (Platform flows from csproj to vcxproj, Platform is deleted).

Repro:
traversal-test.zip

Run

msbuild /Restore /bl dirs.proj

Observe that in artifacts\bin\Shared\ three folders are created - "Release", "Win32", "x64".
Release was created (check binlog) by the project dependency in csproj, when built with Platform=x86
Win32 was created from dirs.proj where Platform=Win32
x64 was created from dirs.proj and not rebuilt from csproj where Platform=x64.
With EnableDynamicPlatformResolution=False the output is created in artifacts\bin\Shared\x86 which is wrong as well.

Running

msbuild /Restore /bl /p:Platform=x86 traversal-test.sln

Does not create the erroneous artifacts\bin\Shared\Release-folder.

How can I stop MSBuild from creating the (probably AnyCPU) Release-folder?
Checking the binlog I found Target Name=_GetProjectReferencePlatformProperties Project=app.csproj adding _MSBuildProjectReferenceExistent with UndefineProperties = ;TargetFramework;TargetFramework;RuntimeIdentifier;SelfContained;Platform.