1

XML ファイルから一部のデータを逆シリアル化するプログラムがあります。VS Debugger でプログラムを起動するか、.exe ファイルを直接クリックすると、非常にうまく動作します。しかし、Microsoft タスク スケジューラを使用してプログラムを開始すると、逆シリアル化は機能しませんが、プログラムは開始します。タスクは、xml ファイルと .exe を含むディレクトリを直接指しています。

メソッド:

    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;
        }
    } 
4

1 に答える 1

3

ほとんどの場合、正しいディレクトリで実行されていません。スケジュールされたタスクを作成するときは、開始するディレクトリを指定する必要があります。そうしないと、デフォルトのディレクトリで開始されます。これは、ほとんどの場合、必要な場所ではありません。

通常、アプリケーションの設定は、アプリケーションの App.Config ファイルに配置します。組み込みの設定を使用すると、すべてが処理されます。見る:

于 2013-11-07T15:30:14.433 に答える