Cross-platofrmowy folder w .net core.

0

Siema, chcialbym w .net core stworzyc folder na wszystkie systemy. Niestety tylko na windowsie dziala tak jakbym chcial. Oto kod:

            var appData = Environment.GetEnvironmentVariable("AppData");
            var dbFolder = $"{ appData }//abc";
            var dbPath = $"{ appData }//abc//abcb.db";

            if (!Directory.Exists(dbFolder))
            {
                Directory.CreateDirectory(dbFolder);
            }

Zamiast tworzyc sciezke, to nazywa plik z takimi slashami. Dodatkowo nie wiem czy "AppData" to dobre miejsce na wszystkie systemy, bo w Linuxie z tego co widzialem ladawal mi do folderu gdzie jest projekt. A zalezy mi na jednym miejscu out side.

2

Zmienna środowiskowa AppData pod Linuksem jest pusta, stąd twoja ścieżka będzie wskazywać względnie w stosunku do folderu, gdzie leży projekt. To raz. Nie wiem dlaczego używasz //, a nie /, to dwa - ale w zasadzie najlepiej używać Path.Combine(), które ci sklei używając separatora dla danej platformy.

Jeżeli chcesz ścieżkę do trzymania danych aplikacji możesz spróbować użyć System.Environment.SpecialFolder.CommonApplicationData - pod Windows to jest C:\ProgramData, natomiast pod Linuksem /usr/share, albo System.Environment.SpecialFolder.UserProfile, czyli C:\Users\user albo /home/user (względnie /Users/user pod macOS), jeżeli te dane mają być per użytkownik.

0

Super, dzieki miszczu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1