2017-10-07 21 views
2

.NET Frameworkでは、ローダは現在のフォルダとGACの依存関係を検索します。.NETコアアセンブリの検索順序

  1. しかし、.NETのコアに何GACはありませんので、.NETのコアアセンブリローダーは、現在のフォルダ内またはグローバルnugetキャッシュ内のみ検索アセンブリ(someuser/.nuget /パッケージフォルダ)もいますか?

  2. また、System.Runtime.dllのようなすべてのベースライブラリがあるMac(C:\ Program Files \ dotnet \ shared)に/ usr/local/share/dotnet/System.Collections.dll。
    アセンブリローダーにも見えますか?

  3. また、これらの基本ライブラリはグローバルナゲットキャッシュにも重複していることがわかりました。
    なぜですか?

答えて

4

ディレクトリは、ご使用の環境に大きく依存するリンクを確認することができます。しかし、彼らが含まれる:

  • C:\プログラムファイル\ DOTNETの\ストア\ x64の\ netcoreapp2.0(またはあなたのマシンのための同等のパス)
  • C:\ Users \ユーザー{ユーザー} \ nuget \パッケージ
  • C:\プログラムファイル\これは単なるパッケージ(すなわちNuGet)のためのものであることをDOTNET \ SDK \ NuGetFallbackFolder

注意。その他のアセンブリリゾルバは、あなたのコード内で直接アセンブリリゾルバを使用している場合は、次のように、あなたが解決のために使用するパスを指定できること...参照およびアプリケーションのアセンブリのために

注意存在します。詳しくは

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

0

.NetコアはクロスプラットフォームであるNugetパッケージに基づいています。 NETコアアプリケーションは、依存関係を解決するためにNuGetに大きく依存しており、開発が容易になります。

あなたはPackageCompilationAssemblyResolverで使用Is there any GAC equivalent for .NET Core?

関連する問題