2017-10-07 82 views
2

在.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緩存中複製。
    爲什麼?

回答

4

由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