0

私はおそらく盲目ですが、これには困惑しています。次の単体テストは、System.UnauthorizedAccessException でローカル マシン (ビルド サーバーではなく) で失敗します。

    [TestMethod()]
    public void UserPreferences_LocalApplicationDataPath_PathAlwaysExists()
    {

        //setup: get the proposed path and then delete the bottom folder and any existing files
        string logPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
        string actual = System.IO.Path.Combine(logPath, @"Autoscribe\Matrix\Gemini");

        //if the folder is there, first delete it
        if (Directory.Exists(actual))
        {
            //log some information about what is going on

            Console.WriteLine("Attempting to delete " + actual + " as user " + Environment.UserName);
            Directory.Delete(actual, true); // <-THROWS EXCEPTION HERE
            Console.WriteLine("Deleted");
        }

        //action
        actual = UserPreferencesManager.LocalApplicationDataPath;

        //assert that getting the path forces it to be created.
        Assert.IsTrue(Directory.Exists(actual));
    }

報告された Environment.UserName 値は、ローカルの AppData フォルダーを「所有」する Windows ユーザーです。フォルダを削除できないのはなぜですか? 奇妙なことに、テストが実行されるすべてのマシン (すべての Windows 7) でこの問題が発生するわけではありません。

4

1 に答える 1

0

フォルダー内のファイルにアクセスする他のアプリケーションを実行しているため、フォルダーをローカルで削除できない場合があります。このフォルダ内のログファイルを確認するためにメモ帳を開いたのではないでしょうか?

マシン上で実際に「作業」しているユーザーやプロセスが存在しないため、ビルド サーバーにはこれらの問題はありません。

于 2013-05-21T14:42:49.180 に答える