You can add the mbuild target to the project file (inside the <Project> element) as follows:
<Target Name="PrintAllReferences" DependsOnTargets="ResolvePackageDependenciesForBuild"> <Message Importance="high" Text="Referenced package: %(PackageDefinitions.Identity)" /> </Target>
What you can call it this way (a line without the parent name of the package means that the project refers to it directly):
$ dotnet msbuild /nologo /t:PrintAllReferences Referenced package: Microsoft.NETCore.Platforms/1.1.0 Referenced package: Microsoft.NETCore.Targets/1.1.0 Referenced package: Microsoft.Win32.Primitives/4.3.0 Referenced package: NETStandard.Library/1.6.1 Referenced package: runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0 Referenced package: runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0 Referenced package: runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0 Referenced package: runtime.native.System/4.3.0 Referenced package: runtime.native.System.IO.Compression/4.3.0 Referenced package: runtime.native.System.Net.Http/4.3.0 Referenced package: runtime.native.System.Security.Cryptography.Apple/4.3.0 Referenced package: runtime.native.System.Security.Cryptography.OpenSsl/4.3.0 Referenced package: runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0 Referenced package: runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0 Referenced package: System.Buffers/4.3.0 Referenced package: System.Collections/4.3.0 β¦
If you want an "inverse dependency tree" - a list of packages and which packages reference them, you can do something similar to:
<Target Name="PrintPackagesAndParents" DependsOnTargets="ResolvePackageDependenciesForBuild"> <Message Importance="high" Text="* %(PackageDependencies.Identity) referenced by:%0a^ ---@ (PackageDependencies->'%(ParentPackage) - target %(ParentTarget)', '%0a^---')" /> </Target>
which produces the following output:
$ dotnet msbuild /nologo /t:PrintPackagesAndParents * JetBrains.Annotations/10.2.1 referenced by: ^--- - target .NETStandard,Version=v1.3 * System.IO.FileSystem.Primitives/4.0.1 referenced by: ^---NETStandard.Library/1.6.0 - target .NETStandard,Version=v1.3 ^---System.IO.Compression.ZipFile/4.0.1 - target .NETStandard,Version=v1.3 ^---System.IO.FileSystem/4.0.1 - target .NETStandard,Version=v1.3 ^---System.Xml.ReaderWriter/4.0.11 - target .NETStandard,Version=v1.3 * System.Linq/4.1.0 referenced by: ^---NETStandard.Library/1.6.0 - target .NETStandard,Version=v1.3 ^---System.Security.Cryptography.Encoding/4.0.0 - target .NETStandard,Version=v1.3 * System.Linq.Expressions/4.1.0 referenced by: ^---NETStandard.Library/1.6.0 - target .NETStandard,Version=v1.3 * System.Net.Http/4.1.0 referenced by: ^---NETStandard.Library/1.6.0 - target .NETStandard,Version=v1.3 * System.Net.Primitives/4.0.11 referenced by: ^---NETStandard.Library/1.6.0 - target .NETStandard,Version=v1.3 ^---System.Net.Http/4.1.0 - target .NETStandard,Version=v1.3 ^---System.Net.Sockets/4.1.0 - target .NETStandard,Version=v1.3 β¦
The documentation for these elements is actually missing, but they have a βpublicβ name and are generated using the ResolvePackageDependencies task, which is executed as part of RunResolvePackageDependencies and creates some very useful elements: TargetDefinitions , PackageDefinitions , PackageDependencies , FileDependencies and DiagnosticMessages .