Пост

Транзитивные ссылки ProjectReference

Реализации "протекают" в библиотеки.

Транзитивные ссылки ProjectReference

Утечка using

Не забыть добавить картинок

Иногда несмотря на то, что зависимая библиотека подключена только к абстракциям, в нее могут “протекать” реализации из сборок которые напрямую не подключены (транзит)
В принципе если работать только через интерфейсы большой проблемы нет, но иногда надо запретить такое поведение

DisableTransitiveProjectReferences

Это свойство отключает все транзитивные ProjectReference для зависимого проекта,
т.е. сборки подключенные только к интерфейсам, ничего кроме этих интерфейсов видеть не будут.\

1
2
3
4
5
6
7
<Project>
	<!-- .... -->
	<PropertyGroup> 
		<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
	</PropertyGroup>
	<!-- .... -->
</Project>

PrivateAssets

отключает в верхней сборке передачу реализаций “вниз”
гарантированно сборки напрямую не подключенные к Infrastructure.csproj реализации внутри нее не увидят.

1
2
3
4
5
6
7
<Project>
	<!-- .... -->
	<ProjectReference Include="..\Infrastructure\Infrastructure.csproj">
	    <PrivateAssets>all</PrivateAssets>
	</ProjectReference>
	<!-- .... -->
</Project>
Авторский пост защищен лицензией CC BY 4.0 .