.NET核心程序集搜索顺序

问题描述:

在.NET Framework中,加载程序搜索当前文件夹中的依赖项,然后在GAC中搜索依赖项。.NET核心程序集搜索顺序

  1. 但是在.NET的核心没有GAC,所以没有.NET核心组装装载机仅搜索组件在当前文件夹或全局的NuGet高速缓存(SomeUser的/ .nuget /包文件夹)也?

  2. 此外,我在我的Mac(C:\ Program Files \ dotnet \ Windows共享)中找到了所有基础库所在的/ usr/local/share/dotnet/shared文件夹,如System.Runtime.dll, System.Collections.dll。
    装配加载程序是否也在那里?

  3. 另外我发现这些基本库也在全局nuget缓存中复制。
    为什么?

由PackageCompilationAssemblyResolver使用的目录将在很大程度上依赖于您的环境。然而,他们可能包括:

  • C:\ Program Files文件\ DOTNET \店\ 64 \ netcoreapp2.0(或为您的机器的相应路径)
  • C:\用户\ {用户} \的NuGet \包
  • C:\ Program Files文件\ DOTNET \ SDK \ NuGetFallbackFolder

请注意,这只是包(即的NuGet)。其他装配解析器存在引用和应用程序组件...

请注意,如果你在你的代码中直接使用汇编解析器,您可以按如下指定用于解决路径:

ICompilationAssemblyResolver assemblyResolver = new CompositeCompilationAssemblyResolver 
         (new ICompilationAssemblyResolver[] 
{ 
    new AppBaseCompilationAssemblyResolver(basePath),  //e.g. project path 
    new ReferenceAssemblyPathResolver(defaultReferenceAssembliesPath, fallbackSearchPaths), 
    new PackageCompilationAssemblyResolver(nugetPackageDirectory) //e.g. C:\Users\\{user}\\.nuget\packages 

}); 

更多有关管理您内部程序集解析的详细信息,请参阅此文章 - Resolving Assemblies in .NET Core

.net核心是基于Nuget软件包跨平台的。 .NET Core应用程序严重依赖NuGet来解决它们的依赖关系,这简化了开发。

您可以查看链接Is there any GAC equivalent for .NET Core?