Проекты могут ссылаться на классы в других проектах, которые напрямую не упоминаются в .NET Core / .NET Standard [duplicate]

Да, с -Xmx вы можете настроить больше памяти для JVM. Убедитесь, что вы не просачиваетесь и не теряете память. Возьмите кучу кучи и используйте анализатор памяти Eclipse , чтобы проанализировать потребление памяти.

14
задан Admir Tuzović 22 June 2016 в 17:36
поделиться

2 ответа

Я боролся с этим в течение нескольких месяцев и, наконец, нашел способ отключить переходные ссылки проектов в Core.

В файле .csproj для .Facade.EF вы можете добавить PrivateAssets="All" к ProjectReference к .DAL:

<ItemGroup>
  <ProjectReference Include="..\.DAL\.DAL.csproj" PrivateAssets="All" />
</ItemGroup>

С помощью этой настройки проекты, которые ссылаются .Facade.EF, больше не ссылаются на DAL.

В более абстрактных терминах, если вы хотите, чтобы A ссылался на B и B на ссылку C, но не хотел, чтобы A ссылался на C, добавьте это:

В B.csproj

<ItemGroup>
  <ProjectReference Include="..\C\C.csproj" PrivateAssets="All" />
</ItemGroup>

Источник: https://github.com/dotnet/project-system/issues/2313

5
ответ дан levihassel 19 August 2018 в 14:29
поделиться

Это предполагаемое поведение. Он называется метапакетами и используется, например, для пакета NETStandard.Library для включения всех библиотек библиотеки базового класса. Я не думаю, что есть способ их спрятать.

4
ответ дан Thomas 19 August 2018 в 14:29
поделиться
  • 1
    Помимо ваших вопросов, мое личное мнение здесь заключается в том, что скрытие артефактов за опорными деревьями может быть полезно для дисциплины разработчиков, но не приносит никакой архитектурной выгоды. В тот момент, когда вы добавляете ссылку на реализацию (то есть здесь .Facade.EF), вы нарушаете все скрытые шаблоны. Если вы делаете это с помощью инъекции IoC / dependency, шаблон работает, и ваша проблема видимости исчезает. Я также считаю, что скрытие класса Product и методов размещения в репозитории, например GetName, не отражает шаблон репозитория. – Thomas 26 June 2016 в 11:45