Проходят ли транзитивные анализаторы/генераторы источников по умолчанию в .NET?C#

Место общения программистов C#
Anonymous
Проходят ли транзитивные анализаторы/генераторы источников по умолчанию в .NET?

Сообщение Anonymous »

В официальной документации NuGet упоминается, что значением PrivateAssets по умолчанию (которое определяет, какие ресурсы не будут «переходить» в потребляющие проекты) для
— contentfiles;analyzers; build — посмотрите это; что, насколько я понимаю, должно означать, что по умолчанию, если:
  • Проект A ссылается на пакет B
  • Пакет B ссылается на пакет C, содержащий анализаторы/генераторы источников
    Тогда анализаторы/генераторы источников из C не будут передаваться в A.
Однако это не так, и это меня озадачивает. Вот минимальное воспроизведение: https://github.com/aradalvand/nuget-tra ... lyzer-test
Шаги по воспроизведению: Вот содержимое .nuspec ThePackage:
< pre class="lang-xml Prettyprint-override">

Код: Выделить всё



ThePackage
1.0.0
ThePackage
Package Description








Обратите внимание, исключают="Build,Analyzers".
Однако при запуске dotnet build на связанном воспроизведении выше, чтобы создать проект ConsumingThePackage, вы увидите, что генераторы исходного кода Mapperly (проект анализатора/генерации исходного кода, на который ссылается ThePackage) фактически выполняются для ConsumingThePackage. Это как раз противоречит тому, что предлагает ignore="Build,Analyzers".
Что мне не хватает?! Это чрезвычайно удивительно, учитывая то, что говорят документы.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ult-in-net

Вернуться в «C#»