Konsol uygulamamın C # ile hangi dizinde çalıştığını nasıl öğrenebilirim?
Konsol uygulamamın C # ile hangi dizinde çalıştığını nasıl öğrenebilirim?
Yanıtlar:
.Exe dosyasının olduğu dizini almak için:
AppDomain.CurrentDomain.BaseDirectory
Mevcut dizini almak için:
Environment.CurrentDirectory
System.AppContext.BaseDirectory.
Uygulamanıza verilen haklara, gölge kopyalamanın yürürlükte olup olmadığına ve diğer başlatma ve dağıtım seçeneklerine bağlı olarak, farklı yöntemler çalışabilir veya farklı sonuçlar verebilir, bu nedenle silahınızı akıllıca seçmeniz gerekecektir. Bunu söyledikten sonra, aşağıdakilerin tümü, bulunduğu makinede yerel olarak yürütülen tamamen güvenilir bir konsol uygulaması için aynı sonucu verecektir:
Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath );
Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( Environment.GetCommandLineArgs()[0] );
Console.WriteLine( Process.GetCurrentProcess().MainModule.FileName );
Gerekli izinleri tam olarak görmek için yukarıdaki üyelerin belgelerine başvurmanız gerekecektir.
Path.GetDirectoryName (Assembly.GetExecutingAssembly (). Konum)
.NET'te, System.Environment.CurrentDirectoryişlemin başlatıldığı dizini almak için kullanabilirsiniz .
System.Reflection.Assembly.GetExecutingAssembly().Locationsize şu anda yürütülmekte olan derlemenin konumunu söyleyecektir (bu yalnızca şu anda yürütülmekte olan derleme, işlemin başladığı derlemenin konumundan farklı bir yerden yüklenmişse ilginçtir).
Windows'ta (Unix hakkında emin değilim vb.), Komut satırındaki ilk argümandır.
C / C ++ 'da argv * içindeki ilk öğe
WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)
Net çekirdek konsol uygulama proje adınızın DataPrep olduğunu varsayalım.
Proje Temel Dizinini Alın:
Console.WriteLine(Environment.CurrentDirectory);
Çıktı: ~ DataPrep \ bin \ Debug \ netcoreapp2.2
Get Project .csproj file directory:
string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\"));
Console.WriteLine(ProjectDirPath);
Çıktı: ~ DataPrep \
AppContext.BaseDirectory.Net5 için kullanın .