2013-11-07 4 views
1

У меня есть программа, которая десериализует некоторые данные из XML-файла. Это работает очень хорошо, когда я запускаю программу с помощью VS Debugger или напрямую нажимаю на .exe-файл. Но когда я использую планировщик заданий Microsoft для запуска программы, десериализация не работает, но программа запускается. Задача указывает непосредственно на каталог с файлом xml и .exe.Deserialization не работает с Task Scheduler

Метод:

internal static Settings DeserializeSettings() 
    { 
     var path = Directory.GetCurrentDirectory() + "\\settings.xml"; 
     XmlSerializer mySerializer = new XmlSerializer(typeof(Settings)); 

     using (FileStream myFileStream = 
     new FileStream(path, FileMode.Open)) 
     { 
      Settings test = new Settings(); 
      if (!(myFileStream.Length <= 0)) 
      { 
       test = (Settings)mySerializer.Deserialize(myFileStream); 
      } 
      return test; 
     } 
    } 

ответ

3

Скорее всего, это не выполняется в нужном каталоге. Когда вы создаете запланированную задачу, вам нужно указать, в какую директорию она начнется. В противном случае она запустится в каталоге по умолчанию, который почти наверняка не там, где вы этого хотите.

Как правило, вы помещаете свои настройки приложения в файл App.Config для своего приложения. Если вы используете встроенные настройки, все будет обработано для вас. См: