Зависимость проекта .NET Core «кровоточит» - PullRequest
0 голосов
/ 10 июня 2018

Инкапсуляция ссылок в .NET Core, похоже, изменилась таким образом, что позволяет ссылкам в одном проекте «сливаться» в другой проект.

В предыдущих версиях .NET сборки, на которые ссылается проект "X", не были доступны другим проектам в решении, которое ссылалось на проект "X".

Так, например, если у вас был Домен проект, который ссылается на Entity Framework , добавление ссылки на этот Домен проект в другой проект в вашем решении не предоставит этому другому проекту доступ к каким-либо классам Entity Framework,

Это было хорошо (по крайней мере, на мой взгляд).

Сегодня вечером поигрался с приложением .NET Core 2.1 и создал проект домена, который использовал EF Core.

Затем я создал проект модульного тестирования (в нетерпеливом ожидании использования нового поставщика EF Core InMemory) и сослался на свой проект домена.

Что меня полностью застало врасплох, так это то, что проект модульного тестирования смогполучить доступ к классам EF Core, хотя я не включил пакет EF Core NuGet в проект модульного тестирования;Мое единственное предположение состоит в том, что он мог получить доступ к EF через мой доменный проект, а именно:

Example of the reference bleed

Это представляется крайне нежелательным;Меня не слишком волнуют ссылки на ссылки в моих модульных тестах, но меня очень волнует такая ссылка на ссылки при работе с другими проектами в моем решении (такими как ASP.NET Core Web project).

Есть ли способ скрыть / скрыть эти ссылки на пакеты в моем проекте Domain от других проектов, которые ссылаются на него?

1 Ответ

0 голосов
/ 10 июня 2018

Это любопытно, и я никогда не замечал этого раньше,

Однако взгляните на это

Управление активами зависимостей

PrivateAssets Эти активы будут использованы, но не будут переданы в родительский проект

И тег

compile Содержимое папки lib и управление возможностью компиляции вашего проекта со сборками в папке

Щелкните правой кнопкой мыши Class library -> Dependencies -> Nuget -> Package и установите для PrivateAssets слово compile ... Iказалось, мог использовать (и все же скрыть зависимость) в вызывающем проекте .Net Core.

Отказ от ответственности , я действительно играл только с этим параметром из любопытства, и не совсем уверен, чтоесть какие-то побочные эффекты для этого

...