Nuget runtime references not copied to output in Desktop Bridge

trymflogard 1 Reputation point
2021-06-23T19:26:03.51+00:00

I have a desktop bridge app, and I'm publish a self-contained project.

The build target for the wapproject (Desktop Bridge) modifies the RuntimeIdentifier of all references to the legacy win-x64 or win-x86 RIDs, instead of win10-x64 or win10-x86. As a result, Nuget packages with native dlls are not copied to the output directory.

I have hacked my way around this by modifying the build metadata, but this could easily break in the future:

xml
  <Target Name="PropsBeforeBuild" BeforeTargets="_BuildDependentProjects" AfterTargets="SetProjectReferenceProperties">
    <PropertyGroup>
      <OriginalPublishProps>%(ProjectReferenceWithPublishProps.AdditionalProperties)</OriginalPublishProps>
    </PropertyGroup>
    <ItemGroup>
      <ProjectReferenceWithPublishProps>
        <SetConfiguration>%(ProjectReferenceWithPublishProps.SetConfiguration);RuntimeIdentifier=win10-x64</SetConfiguration>
        <AdditionalProperties>$(OriginalPublishProps.Replace("win-x64", "win10-x64"))</AdditionalProperties>
      </ProjectReferenceWithPublishProps>
    </ItemGroup>
    <Message Text="%(ProjectReferenceWithPublishProps.SetConfiguration);" />
    <Message Text="%(ProjectReferenceWithPublishProps.AdditionalProperties);" />
    <PropertyGroup>
      <RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == 'win-x64' OR '$(RuntimeIdentifier)' == ''">win10-x64</RuntimeIdentifier>
    </PropertyGroup>
  </Target>

This works, but since the DesktopBridge target adds the modified reference (with the legacy RIDs) to _MSBuildProjectReferenceExistent, I get MSB3243: No way to resolve conflict between .... in the build output. At this point, I'm better off ditching the desktop bridge build targets entirely.

Is there something I can do to resolve this?

Not Monitored
Not Monitored
Tag not monitored by Microsoft.
43,339 questions
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.