Skip to content

NuGet Targets file doesn't include WinMDs from SDKReference targets #677

@jonwis

Description

@jonwis

I have this in my vcxproj:

  <ItemGroup>
    <SDKReference Include="CppUnitTestFramework.Universal, Version=$(UnitTestPlatformVersion)" />
    <SDKReference Include="TestPlatform.Universal, Version=$(UnitTestPlatformVersion)" />
  </ItemGroup>

<Target Name="GetCppWinRTDirectWinMDReferences"
DependsOnTargets="ResolveAssemblyReferences;$(GetCppWinRTDirectWinMDReferencesDependsOn)"
Returns="@(CppWinRTDirectWinMDReferences)">
<ItemGroup>
<_CppWinRTDirectWinMDReferences Remove="@(_CppWinRTDirectWinMDReferences)" />
<_CppWinRTDirectWinMDReferences Include="@(ReferencePath)" Condition="'%(ReferencePath.IsSystemReference)' != 'true' and '%(ReferencePath.WinMDFile)' == 'true' and '%(ReferencePath.ReferenceSourceTarget)' == 'ResolveAssemblyReference'" />
<CppWinRTDirectWinMDReferences Remove="@(CppWinRTDirectWinMDReferences)"/>
<CppWinRTDirectWinMDReferences Include="@(_CppWinRTDirectWinMDReferences)">
<WinMDPath>%(FullPath)</WinMDPath>
</CppWinRTDirectWinMDReferences>
</ItemGroup>
<Message Text="CppWinRTDirectWinMDReferences: @(CppWinRTDirectWinMDReferences->'%(WinMDPath)')" Importance="$(CppWinRTVerbosity)"/>
</Target>

I added a reference to the MSTest / Visual Studio Test SDK to add tests, but couldn't #include <winrt/Microsoft.VisualStudio.TestPlatform.TestExecutor.WinRTCore.h>, etc. Looks like the missing piece was adding this at line 256:

<_CppWinRTDirectWinMDReferences Include="@(ReferencePath)" Condition="'%(ReferencePath.WinMDFile)' == 'true' and '%(ReferencePath.ReferenceSourceTarget)' == 'ExpandSDKReference'" />

(And of course adding a DependsOnTarget for ExpandSDKReferences.)

Then it worked great! There's a CppWinRTSDKReferences variable referenced in GetCppWinRTPlatformWinMDReferences ... maybe some previous operation was supposed to populate it, and that set should be present in both places?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions