gpt4 book ai didi

c# - .NET Core 程序集搜索顺序

转载 作者:太空狗 更新时间:2023-10-29 22:56:59 24 4
gpt4 key购买 nike

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

  1. 但是在 .NET Core 中没有 GAC,那么 .NET Core 程序集加载器是否也只能搜索当前文件夹或全局 nuget 缓存(someuser/.nuget/packages 文件夹)中的程序集?

  2. 我还在我的 Mac 中找到了一个/usr/local/share/dotnet/shared 文件夹(在 Windows 中为 C:\, 系统.集合.dll.
    程序集加载器也在那里吗?

  3. 我还发现这些基础库在全局 nuget 缓存中也是重复的。
    为什么?

最佳答案

PackageCompilationAssemblyResolver 使用的目录在很大程度上取决于您的环境。但是,它们可能包括:

  • C:\Program Files\dotnet\store\x64\netcoreapp2.0(或您机器的等效路径)
  • C:\Users\{user}\.nuget\packages
  • 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

关于c# - .NET Core 程序集搜索顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46619499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com