Включение связанных с проектом файлов PDB в пакет nuget - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь включить файлы PDB ссылок на проекты в пакет Nuget с помощью команды dotnet pack.

Я нашел решение включить файлы DLL, на которые ссылаются проекты, в пакет nuget. Это требует добавления некоторого кода в файл .csproj. Я также пытался заставить его работать с файлами .pdb, но это не работает.

Этот код копирует только файлы * .dll в nuget.

<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
  <ItemGroup>
    <BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))"/>
  </ItemGroup>
</Target>

Это то, что я пробовал, но * .pdb файлы не видны в nuget.

<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
  <ItemGroup>
    <BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')->Replace('.dll', '.pdb'))"/>
  </ItemGroup>
</Target>

1012 * РЕШЕНИЕ *

У меня есть решение для копирования ссылочной PDB - просто добавьте следующие строки в ваш файл .csproj:

<Target Name="CopyPdbToPackage" Inputs="@(ReferenceCopyLocalPaths-&gt;WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" Outputs="%(ProjectReference.Identity)" AfterTargets="CopyProjectReferencesToPackage">
    <PropertyGroup>
        <CurrentReference>%(ProjectReference.Identity)</CurrentReference>
        <CurrentReferenceName>$([System.IO.Path]::GetFileNameWithoutExtension($(CurrentReference)))</CurrentReferenceName>
    </PropertyGroup>

    <Message Text="Copying PDB of $(CurrentReferenceName) to packages..." Importance="high" Condition="'%(ProjectReference.NugetIgnore)'!='true'" />

    <ItemGroup>
        <AllItems Include="@(ReferenceCopyLocalPaths-&gt;WithMetadataValue('OriginalProjectReferenceItemSpec', '$(CurrentReference)'))" />
        <PdbFiles Include="%(AllItems.Identity)" Condition="@(AllItems-&gt;EndsWith('.pdb'))=='true'" />
    </ItemGroup>
    <ItemGroup>
        <TfmSpecificPackageFile Include="@(PdbFiles)" Condition="'%(ProjectReference.NugetIgnore)'!='true'">
            <PackagePath>lib/$(TargetFramework)</PackagePath>
        </TfmSpecificPackageFile>
    </ItemGroup>
</Target>

Но есть одна проблема, PDB "основного" проекта nuget не копируется ...

1 Ответ

0 голосов
/ 10 января 2019

Вы можете заставить команду содержать символы.

--include-symbols

Последняя команда, например:

dotnet pack -c Debug --include-symbols

Это включает в себя ваш * .pdb файл в пакете. Вы можете узнать больше о включаемых символах Здесь

Редактировать: Мой ответ не соответствует требованию вопроса. Пожалуйста, прочитайте комментарии к этому сообщению.

...