1. ホーム
  2. msbuild

[解決済み] msbuild.exe が開かれたまま、ファイルがロックされる

2022-12-27 03:53:39

質問

私は TeamCity を使用しており、それは msbuild (.NET 4) を呼び出します。ビルドが完了した後 (ビルドが成功したかどうかは関係ないようです)、msbuild.exe が開いたままになって、ファイルの 1 つをロックします。これは TeamCity が作業ディレクトリをクリアしようとするたびに、失敗し、続行できなくなるという奇妙な問題があります。

この現象は ほとんど が発生します。

これは本当に迷うところなので、できるだけ詳しく説明します。

  • サーバーは Intel Core i7、2 GB ram、Windows Server 2008 standard 64-bit SP2 です。
  • TeamCityでは、msbuildランナーを構成するために /m コマンドラインパラメーター(マルチコアを使用することを意味します)
  • 該当のファイルは ALWAYS のパスで、.NET プロジェクトの 1 つで参照されているのと同じ外部 DLL です。 External Tools\Telerik\Telerik.Reporting.Dll . (に含まれる他のいくつかの .DLL ファイルがあります)。 External Tools ディレクトリに含まれる他のいくつかの .DLL ファイルは、同様のパス構造でこの問題を引き起こすことはありません)。現在、これは Telerik レポートの試用版で、違いがあることを念のため示します。
  • この問題が発生するとき、常に複数の msbuild.exe *32 プロセスがタスク マネージャーに表示されます。私は 7 つあると信じています。プロセス エクスプローラーを使用すると、それらはすべてトップレベルのプロセスのように見えます (親はありません)。これらはすべて、20 ~ 50MB の RAM と 0.0% の CPU を使用しています。
  • 1-3 分間待つと、msbuild.exe プロセスは自分自身で終了し、TeamCity は作業ディレクトリを適切に更新することができます。
  • msbuild プロセスを手動で終了すると、TeamCity の更新がすぐに再実行されます。
  • Windows でインデックス サービスをオフにします (ただし、前の 2 つのポイントにより、問題を引き起こしているのは msbuild.exe であることがほぼ確認されます)。
  • Telerik.reporting.dll に特別なプロパティはありません。唯一の SVN プロパティは svn:mime-type = application/octet-stream

どなたか遭遇されたことはありませんか?

どのように解決するのですか?

使用方法 msbuild/nr:false .

簡単に説明します。MSBuild は、特に並列ビルドを高速化するために多くのことを行おうとしています。また、プロセスのスピンアップに少し時間がかかるため、ビルドが完了した後、これらのプロセスは (デフォルトでは 15 分間) 滞在し、すぐに再度ビルドする場合は、これらのノードを再利用してプロセスのセットアップ コストを削減できます。しかし、前述のコマンドライン オプションで nodeReuse をオフにすることで、この動作を無効にすることができます。

も参照してください。