5

ローカルで正常に動作する単体テストがありますが、TeamCity ビルド サーバーにアップロードすると、「別のプロセスで使用されているため、プロセスはファイルにアクセスできません」で失敗します。

  1. テストで何かを行う前に、ファイルが存在するかどうかセットアップをチェックインし、存在する場合は削除しようとします。これは、上記と同じエラー メッセージで失敗します
  2. ファイルを書き込むときは、ライターを閉じてから破棄します。これにより、リソースを取り除く必要があると思います。

だから私はいくつかの質問があります

  1. 誰かが同様の問題を抱えていて、それらを回避することができましたか
  2. どのプロセスが利己的にファイルをロックしたかをプログラムで調べる方法!!!

乾杯

4

3 に答える 3

4

Sysinternals handle.exeは最初のステップです。または、Process Explorerを使用しますFind Handle or DLL。ただし、ハンドルを閉じるよりもプロセスを強制終了する方が常に安全です。

プログラム的には、Windows ハンドル テーブルを読み取るカーネル ドライバーを作成するだけです。

于 2008-11-20T16:11:15.290 に答える
2

ProcessMon (検索用) とUnlocker (少なくともロック解除用) も便利です。

于 2008-11-20T16:13:50.977 に答える
1

Sysinternals FileMonには、古いバージョンの Windows でこれをどのように達成したかについての情報 (下にスクロール) があります。

Process Monitorは同社の最新バージョンですが、その方法についての手がかりはあまりありません。ただし、そこにリンクされているナレッジベースの記事がいくつかありますが、そこからこの情報にたどり着くはずです。

-アダム

于 2008-11-20T16:19:36.893 に答える