Почему ссылки на мой проект передаются другим ссылкам

Мы начали переход на новый тип проекта для .NET Standard и использовали инструмент, на который ссылался Хансельман в этот пост в блоге.

Одна особенность, которую мы заметили, заключается в том, что проект теперь получает ссылки на проекты, которые есть у его ссылок. Я настроил образец и подтвердил, что это не просто наше основное приложение. Допустим, для основного приложения у нас есть

Консольное приложение: TestingSomeStuff

Стандартная сетевая библиотека: Library1

Стандартная сетевая библиотека: Library2

В этой ситуации у нас есть следующие ссылки:

TestingSomeStuff -> Библиотека1 -> Библиотека2

По какой-то причине TestingSomeStuff, которая напрямую не ссылается на Library2, может обращаться к типам в Library2, и это кажется неверным. Я настраиваю ту же ситуацию в приложении .NET Framework, и TestingSomeStuff не имеет доступа к Library2.

Чтобы построить приложение с соответствующим уровнем, нам нужна возможность заблокировать TestingSomeStuff от доступа к Library2 в качестве сквозного доступа, и я не могу найти никакой информации о том, как это сделать.

Я пытался установить IncludeAssets, ExcludeAssets и другие подобные параметры, но ничего не сработало.


person Dan Drews    schedule 15.10.2018    source источник
comment
Вы пытались установить PrivateAssets="All"?   -  person Severius5    schedule 15.10.2018


Ответы (2)


Это новое в новых проектах MSBuild для .NET Core. Если вы хотите что-то скрыть, пометьте это как internal в Библиотеке2, используйте атрибут InternalsVisibleTo и предоставьте доступ к Библиотеке1.

person Daniel A. White    schedule 15.10.2018
comment
Есть ли новое ключевое слово, которое мы можем использовать для реальных внутренних классов? - person Dan Drews; 15.10.2018
comment
@DanDrews нет. - person Daniel A. White; 15.10.2018
comment
Это прискорбно - person Dan Drews; 15.10.2018

Хорошо, я понял, что здесь происходит, это была полностью моя ошибка, но я оставляю вопрос не удаленным для сообщества. Я ошибся в утверждении, что ExcludeAssets вообще не работает.

Проблема заключалась в том, что установка была более сложной, чем мой пример проекта. На самом деле у нас было следующее:

TestingSomeStuff

-Библиотека1

--Библиотека3

-Библиотека2

--Библиотека3

Я тестировал ExcludeAssets=All только в библиотеке1, поэтому он все еще ссылался на нее через ссылку на библиотеку2.

person Dan Drews    schedule 15.10.2018