красиво и понятно - просто чтобы подчеркнуть то, что вы сказали (но что мне удалось пропустить в первый раз). Ссылочной цепочкой является Web-> Services-> Business, и именно в SERVICES вам нужно добавить PrivateAssets = "All", чтобы скрыть Business от Web (я помещал его в Web-> Services ProjectReference, который не работал - я просто нужно внимательнее прочитать ваш ответ!)

у веб-сайт MVC с использованием ASP.NET Core 2.0.

В проекте ASP.NET Core (назовем егоWeb) Я ссылаюсь на проект .NET Standard 2 в том же решении (назовем егоService).Service Проект также ссылается на третью библиотеку .NET Standard 2 в решении (назовем этоBusiness).Business Проект объявляет тип с именемModel.

Проблема в том, что я могу использоватьModel вWeb проект (т.е. компилятор видит типModel и я могу сделатьvar a = new Model();) как будтоWeb проект ссылалсяBusiness, но это на самом деле имеет только ссылку наService.

Как я могу спрятатьсяModel изWeb? Это новая функция в ASP.NET Core 2 или все проекты .NET Standard похожи на это?

редактировать

Как указаноВотЭто связано с переходными ссылками на проекты, которые являются новой «функцией» в .NET Standard, но как мне это исправить?

 Federico Dipuma12 окт. 2017 г., 14:14
Возможный дубликатПереходные ссылки в .Net Core 1.1
 Federico Dipuma12 окт. 2017 г., 14:10
Я считаю, что это особенность новых форматов проекта (project.json а такжеcsproj в настоящее время). Любая вложенная ссылка доступна непосредственно внутри проекта (иначепереходные зависимости). Вы можете попробоватьсюда чтобы отключить его для одной ссылки.

Ответы на вопрос(1)

Решение Вопроса

мой вопрос был близок к вопросу, помеченному здесь как дубликат, но для его решения требуется другая тактика.

Спасибо за комментарий от "Федерико Дипума" и ответ, данныйВот Я смог решить эту проблему.

Вы должны отредактироватьService.csproj файл и добавитьPrivateAssets="All" вProjectReference ключи, которые вы не хотите перетекать наверх.

<ItemGroup>
    <ProjectReference Include="..\Business.csproj" PrivateAssets="All" />
</ItemGroup>
 ubienewbie14 мар. 2018 г., 11:16
красиво и понятно - просто чтобы подчеркнуть то, что вы сказали (но что мне удалось пропустить в первый раз). Ссылочной цепочкой является Web-> Services-> Business, и именно в SERVICES вам нужно добавить PrivateAssets = "All", чтобы скрыть Business от Web (я помещал его в Web-> Services ProjectReference, который не работал - я просто нужно внимательнее прочитать ваш ответ!)

Ваш ответ на вопрос