включить файл для каждой целевой платформы в nuget

У меня есть проект (в стиле SDK) с несколькими целевыми платформами:

      <PropertyGroup>
    <TargetFrameworks>net48;netcoreapp3.1;net5.0-windows;net6.0-windows</TargetFrameworks>
</PropertyGroup>

Когда я его создаю, файл создается для каждой целевой платформы. Я хочу включить эти pdbфайлы в nuget рядом с их соответствующими dll(так, в \lib\targetFramework\).

Я могу сделать это для одной конкретной структуры:

      <ItemGroup>
    <Content Include="bin\$(Configuration)\net48\*.pdb" Pack="true" PackagePath="lib\net48" />
</ItemGroup>

Как я могу указать это для всех без жесткого кодирования?


Я могу сделать это в общем, если у меня есть коллекция всех TargetFrameworksпреобразованы определенным образом:

      <ItemGroup>
  <!-- hard-coded collection -->
  <PDBFile Include="bin\$(Configuration)\net48\$(AssemblyName).pdb">
    <NugetFramework>net48</NugetFramework>
  </PDBFile>
  <PDBFile Include="bin\$(Configuration)\netcoreapp3.1\$(AssemblyName).pdb">
    <NugetFramework>netcoreapp3.1</NugetFramework>
  </PDBFile>
  <PDBFile Include="bin\$(Configuration)\net5.0-windows\$(AssemblyName).pdb">
    <NugetFramework>net5.0-windows7.0</NugetFramework>
  </PDBFile>
  <PDBFile Include="bin\$(Configuration)\net6.0-windows\$(AssemblyName).pdb">
    <NugetFramework>net6.0-windows7.0</NugetFramework>
  </PDBFile>

  <!-- generic usage of the collection -->
  <Content Include="@(PDBFile)" Pack="true" PackagePath="lib\%(NugetFramework)"/>
</ItemGroup>

Но я до сих пор не знаю, как определить PDBFileсбор в менее жестко запрограммированном виде...

0 ответов

Другие вопросы по тегам