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 stderr yerine 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_PATHS
iç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.
Sağlanan kitaplık adının mutlak veya göreli bir yolu temsil ediyor olup olmadığını denetleyin.
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
,.dylib
ve.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.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.
Kitaplığın yüklenemediğine işaret edin.