Share via


Varsayılan yoklama

Örnek AssemblyLoadContext.Default , bir derlemenin bağımlılıklarını bulmakla sorumludur. Bu makalede örneğin yoklama mantığı açıklanmaktadır AssemblyLoadContext.Default .

Konak yapılandırılmış yoklama özellikleri

Çalışma zamanı başlatıldığında, çalışma zamanı konağı yoklama yollarını yapılandıran AssemblyLoadContext.Default bir dizi adlandırılmış yoklama özelliği sağlar.

Her yoklama özelliği isteğe bağlıdır. Varsa, her özellik mutlak yolların sınırlandırılmış listesini içeren bir dize değeridir. Sınırlayıcı Windows'ta ';' ve diğer tüm platformlarda ':' şeklindedir.

Özellik Adı Açıklama
TRUSTED_PLATFORM_ASSEMBLIES Platform ve uygulama derleme dosyası yollarının listesi.
PLATFORM_RESOURCE_ROOTS Uydu kaynak derlemelerini aramak için dizin yollarının listesi.
NATIVE_DLL_SEARCH_DIRECTORIES Yönetilmeyen (yerel) kitaplıkları aramak için dizin yollarının listesi.
APP_PATHS Yönetilen derlemeleri aramak için dizin yollarının listesi.

Özellikler nasıl doldurulur?

Myapp>.deps.json dosyasının mevcut olup olmadığına bağlı olarak özellikleri doldurmaya <yönelik iki ana senaryo vardır.

  • *.deps.json dosyası mevcut olduğunda, yoklama özelliklerini doldurmak için ayrıştırılır.
  • *.deps.json dosyası mevcut olmadığında, uygulamanın dizininin tüm bağımlılıkları içerdiği varsayılır. Dizinin içeriği, yoklama özelliklerini doldurmak için kullanılır.

Ayrıca başvuruldu çerçeveler için *.deps.json dosyaları benzer şekilde ayrıştırılır.

Ortam değişkeni DOTNET_ADDITIONAL_DEPS ek bağımlılıklar eklemek için kullanılabilir. dotnet.exe ayrıca, uygulama başlangıcında bu değeri ayarlamak için isteğe bağlı --additional-deps bir parametre içerir.

APP_PATHS Özelliği varsayılan olarak doldurulmuyor ve çoğu uygulama için atlanıyor.

Uygulama tarafından kullanılan tüm *.deps.json dosyalarının listesine aracılığıyla System.AppContext.GetData("APP_CONTEXT_DEPS_FILES")erişilebilir.

Yönetilen koddan gelen yoklama özelliklerine Nasıl yaparım? bakın?

Her özellik, yukarıdaki tablodan AppContext.GetData(String) özellik adıyla işlevini çağırarak kullanılabilir.

Yoklama özelliklerinin yapısında hata ayıklama Nasıl yaparım??

Belirli ortam değişkenleri etkinleştirildiğinde .NET Core çalışma zamanı konağı yararlı izleme iletileri oluşturur:

Ortam değişkeni Açıklama
COREHOST_TRACE=1 İzlemeyi etkinleştirir.
COREHOST_TRACEFILE=<path> Varsayılan stderryerine bir dosya yolunu izler.
COREHOST_TRACE_VERBOSITY Ayrıntı düzeyini 1 (en düşük) ile 4 (en yüksek) arasında ayarlar.

Yönetilen derleme varsayılan yoklama

Yönetilen bir derlemeyi bulmak için yoklama yapılırken şu AssemblyLoadContext.Default sırayla görünür:

  • ile TRUSTED_PLATFORM_ASSEMBLIES eşleşen AssemblyName.Name dosyalar (dosya uzantıları kaldırıldıktan sonra).
  • Ortak dosya uzantılarıyla derleme APP_PATHS dosyaları.

Uydu (kaynak) derleme yoklama

Belirli bir kültüre ait bir uydu derlemesini bulmak için bir dizi dosya yolu oluşturabilirsiniz.

ve APP_PATHSiçindeki PLATFORM_RESOURCE_ROOTS her yol için dizeyiCultureInfo.Name, dizin ayırıcısını, dizeyi AssemblyName.Name ve '.dll' uzantısını ekleyin.

Eşleşen bir dosya varsa yüklemeyi ve döndürmeyi deneme.

Yönetilmeyen (yerel) kitaplık yoklama

Çalışma zamanının yönetilmeyen kitaplık yoklama algoritması tüm platformlarda aynıdır. Ancak, yönetilmeyen kitaplığın gerçek yükü temel alınan platform tarafından gerçekleştirildiğinden gözlemlenen davranış biraz farklı olabilir.

  1. Sağlanan kitaplık adının mutlak veya göreli bir yolu temsil ediyor olup olmadığını denetleyin.

  2. Ad mutlak bir yolu temsil ediyorsa, sonraki tüm işlemler için adı doğrudan kullanın. Aksi takdirde, adı kullanın ve dikkate almak için platform tanımlı birleşimler oluşturun. Birleşimler, platforma özgü ön eklerden (örneğin, lib) ve/veya soneklerden (örneğin, .dll, .dylibve .so) oluşur. Bu kapsamlı bir liste değildir ve her platformda yapılan tam çabayı temsil etmez. Bu yalnızca düşünülenlerin bir örneğidir. Daha fazla bilgi için bkz . yerel kitaplık yükleme.

  3. Ad ve yol göreliyse, her birleşim aşağıdaki adımlarda kullanılır. İlk başarılı yükleme girişimi, hemen yüklenen kitaplığın tutamacını döndürür.

    • Özelliğinde NATIVE_DLL_SEARCH_DIRECTORIES sağlanan her yola ekleyip yüklemeyi deneme.

    • Çağrı derlemesinde tanımlanmamışsa DefaultDllImportSearchPathsAttribute veya p/invoke ise veya tanımlanmışsa ve içeriyorsa DllImportSearchPath.AssemblyDirectory, adı veya bileşimi çağıran derlemenin dizinine ekleyin ve yüklemeyi deneyin.

    • Kitaplığı yüklemek için doğrudan kullanın.

  4. Kitaplığın yüklenemediğine işaret edin.