Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 50975|Yanıt: 0

[Kaynak] .NET Core tek dosya yolu sorunu çıkarıyor

[Bağlantıyı kopyala]
2021-3-28 13:56:32 tarihinde yayınlandı | | | |
.NET Core 3.1 kullanarak Linux sisteminde çalışan tek dosyalı bir konsol uygulaması yayınlarken, program kodunun yapacağı ana şey çok basittir, yaniYapılandırma dosyası çıktısını program dizininden okuyun! Ancak, Linux'ta çalıştırmak üzere tek bir dosya yayınladığınızda, dosyanın bulunmadığını söylüyor.

Yeni .NET Core özellikleri, tek dosyalı bir yürütülebilir dosya yayınlar
https://www.itsvse.com/thread-8273-1-1.html

Mevcut dizini almak için System.Environment.CurrentDirectory ile dikkatli olun
https://www.itsvse.com/thread-9464-1-1.html
Test kodu:

Çıktı şöyledir:

AppDomain.CurrentDomain.SetupInformation.ApplicationBase:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/
Environment.CurrentDirectory:/root/test
AppDomain.CurrentDomain.BaseDirectory:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/


.NET Core uygulamasını tek bir dosya olarak yayımlarken, CentOS sisteminde çalıştırıldığında, program kendi kendine çıkarılır ve serbest bırakılır/var/tmp/.net/root/dizinini başlatır ve ardından dizinde serbest bırakılan programı çağırır; bu da programın yapılandırma dosyasını neden bulamadığını da açıklayabilir.

çözüm

Program yolunu okumak için System.Environment.CurrentDirectory kullanıldığında, System.Environment.CurrentDirectory gerçekten mevcut dizini almaktadır, ancak program A program B'yi çağırır ve program B dizini almak için System.Environment.CurrentDirectory kullanır. O zaman B programında elde edilen dizin, B uygulamasının bulunduğu dizin artık değildir; A'nın bulunduğu dizin haline gelir.





Önceki:.NET Core Linux Hatası: Geçerli bir ICU paketi kurulamadı...
Önümüzdeki:Linux fotoğraflarında .NET Core su nişanı sorunları
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com