.NET核心依赖树

And*_*dez 9 .net-core visual-studio-2017

是否可以在.net核心应用程序中查看项目的依赖项?我正在使用Visual Studio 2017 Professional.

目前我在我的网站中引用了以下的金块包csproj.

<ItemGroup>
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.2" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.1" />
    <PackageReference Include="SimpleInjector.Integration.AspNetCore.Mvc" Version="4.0.8" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

您可以在哪里导航依赖项.

依赖

但它很难找到一个特定的依赖 - 如果你知道你在寻找什么,树就是好的.有没有办法输出依赖程序集的平面列表和那些版本?

Mar*_*ich 15

您可以将msbuild目标添加到项目文件(在<Project>元素内),如下所示:

<Target Name="PrintAllReferences" DependsOnTargets="ResolvePackageDependenciesForBuild">
  <Message Importance="high" Text="Referenced package: %(PackageDefinitions.Identity)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

您可以这样调用(没有父包名称的行意味着它直接由项目引用):

$ 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
  …
Run Code Online (Sandbox Code Playgroud)

如果你想要一个"反向依赖树" - 一个包列表和哪些包引用它们 - 你可以做类似的事情:

<Target Name="PrintPackagesAndParents" DependsOnTargets="ResolvePackageDependenciesForBuild">
  <Message Importance="high" Text="* %(PackageDependencies.Identity) referenced by:%0a^---@(PackageDependencies->'%(ParentPackage) - target %(ParentTarget)', '%0a^---')" />
</Target>
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

$ 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
  …
Run Code Online (Sandbox Code Playgroud)

是不是真的有这些项目的文件材料,但他们有"公共"的名字,并通过产生ResolvePackageDependencies把作为的一部分执行任务RunResolvePackageDependencies目标,并产生了一些非常有用的物品:TargetDefinitions,PackageDefinitions,PackageDependencies,FileDependencies和DiagnosticMessages.

  • 啊,是的,2.0 的分辨率已经修改,你现在需要依赖 `RunResolvePackageDependencies` AFAIK (3认同)
  • 添加了反向依赖关系树的示例以及指向源代码的链接.我不认为有关于它的良好文档,但.. (2认同)

And*_*dez 6

这在今天Morning Brew可能值得一看的地方闪现:

Martin Bjorkstrom Dotnet 依赖


小智 5

实际上,您可以在 Visual Studio 中轻松搜索特定项目的依赖关系。

只需右键单击“依赖项”,选择“范围到此”。然后就可以直接搜索依赖关系了。 范围到此