Как мой пакет Nuget может скопировать .so файлы на выход? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть пакет nuget, который предоставляет часть функциональности. В этом пакете nuget есть ссылка на libmediainfo, сторонний файл .dll и .so файл. Я включил их в свой пакет nuget, добавив в свой файл .csproj следующее:


    <ItemGroup>
        <Content Include="libmediainfo.dll">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
            <Pack>true</Pack>
            <PackagePath>lib\$(TargetFramework)</PackagePath>
        </Content>
        <Content Include="libmediainfo.so">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
            <Pack>true</Pack>
            <PackagePath>lib\$(TargetFramework)</PackagePath>
        </Content>
    </ItemGroup>

Теперь, когда я включаю этот пакет в свой основной проект, только сторонний файл .dll копируется в каталог bin, а не в файл .so. Я работаю в linux docker контейнере и мне нужно скопировать оба файла. Этот пакет nuget будет использоваться в нескольких местах. Как я могу заставить проекты-потребители включать файл .so, просто добавив ссылку на пакет nuget?

1 Ответ

1 голос
/ 26 февраля 2020

libmediainfo.dll - это одна сборка, поэтому ее можно упаковать в папку lib. Но libmediainfo.so - это простой файл, он должен быть упакован в папку content / contentFiles . Поэтому вы должны удалить строку <PackagePath>lib\$(TargetFramework)</PackagePath> во втором скрипте.

<Content Include="libmediainfo.so">
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  <PackageCopyToOutput>true</PackageCopyToOutput>
  <pack>true</pack>
</Content>

Этого достаточно, чтобы упаковать libmediainfo.so в папку content / contentFiles. И если ваш основной проект использует этот пакет, соберите его, и вы увидите libmediainfo.so в его папке bin. ( PackageCopyToOutput - это то, что вы ищете!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...