Экспресс-транзитивная зависимость в MSBuild без импорта PackageReference - PullRequest
0 голосов
/ 20 мая 2018

У меня есть проект MySdk.csproj, который я упаковываю во время сборки через пакет dotnet.Я хочу сказать, что этот проект имеет транзитивную зависимость от Trans.nupkg, но на самом деле я не хочу импортировать все активы из Trans.nupkg во время сборки MySdk.csproj.Я хочу, чтобы потребитель (назовите это Consumer.csproj) MySdk.nupkg получил все активы из Trans.nupkg.

Если я исключаю наборы для Trans.nupkg из MySdk.nupkg, то nuspec и nupkg для MySdk.nupkg отражает исключение, и когда Consumer.csproj ссылается на MySdk.nupkg, он не получит переходные активы.

Есть ли способ сделать это?

Спасибо.

ОБНОВЛЕНИЕ:

Если я попытаюсь установить для PrivateAssets значение None и ExcludeAssets для создания ссылки Trans.nupkg из MySdk.csproj следующим образом:

<PackageReference Include="Trans" Version="1.0.*" PrivateAssets="None" ExcludeAssets="build" />

сгенерированный nuspec в MySdk.nupkg выглядиткак это:

<dependency id="Trans" version="1.0.0" include="Runtime,Compile,Native,ContentFiles,Analyzers" />

, что означает, что когда Consumer.csproj добавляет ссылку, подобную этой:

<PackageReference Include="MySdk" Version="1.0.0" />

переходная ссылка на Trans.nupkg не будет включать в себя собственные цели сборки, что противоположно тому, что я пытаюсь достичь.

1 Ответ

0 голосов
/ 20 мая 2018

В то время как ExcludeAssets контролирует, какие активы будет использовать MySdk.csproj, PrivateAssets указывает, какие активы не будут проходить через транзитивную зависимость.

Значение по умолчанию для PrivateAssets равно contentfiles;analyzers;build, то естьпричина того, что Consumer.csproj не получит встроенные ресурсы (файлы .pros / .targets), анализаторы roslyn и файлы содержимого по умолчанию.

Чтобы изменить это, укажите параметр пакета Trans PrivateAssetsна none, что приведет к тому, что Consumer.csproj будет вести себя так, как если бы он напрямую ссылался на пакет Trans (пример также исключает зависимости во время сборки из проекта MySdk):

<PackageReference Include="trans" PrivateAssets="none" ExcludeAssets="contentfiles;build" />

Для получения дополнительной информации см. Управление активами зависимостей .

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