Приложение не может найти настройки или файлы изображений после загрузки Windows - PullRequest
1 голос
/ 28 марта 2019

У меня есть приложение, которое загружается после загрузки Windows.Это работает хорошо, однако приложение не может найти необходимый CSV-файл с настройками или необходимые ресурсы, которые приводят к сбою.Однако приложение работает нормально, если я вручную открываю его после входа в свою учетную запись Windows.

Я попытался проверить, существует ли действительно файл csv, но, как сказано выше, приложение не может его найти.Поскольку файл csv содержит некоторые настройки и языковые данные, приложение не может быть запущено, если файл не найден

Перед тем, как прочитать файл csv, я проверяю, существует ли файл, выполнив следующие действия:

     try {
        string langFile = Path.Combine(Settings.Default.WorkingDirectory, "languageSupport.csv"); //Get language file
        // Read out the file
    } catch {
        MessageBox.Show("Could not load settings data!");
        Console.WriteLine("Error occured: " + e.Message);
    }

Кроме того, я думаю, что важно не обращать внимания на следующее: эта ошибка возникает, только если компьютер был выключен хотя бы на несколько часов.Перезагрузка или выключение компьютера и включение его через несколько минут не дает мне ошибки.

Что я могу сделать, чтобы улучшить это?Почему происходит сбой при автоматической загрузке, а не при ручной загрузке?

1 Ответ

1 голос
/ 28 марта 2019

Это потому, что когда он загружается автоматически, рабочий каталог отличается от того, когда вы открываете его вручную из .exe, попробуйте использовать AppDomain.CurrentDomain.BaseDirectory, чтобы убедиться, что пути относятся к вашему приложению, также вы можете использовать его для указанияпуть к файлу .csv, при условии, что файл находится в том же каталоге, что и ваше приложение:

try {
        string langFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "languageSupport.csv"); //Get language file
        // Read out the file
    } catch {
        MessageBox.Show("Could not load settings data!");
        Console.WriteLine("Error occured: " + e.Message);
    }
...