c# .net で Windows サービスを構築しています。ビルド時にサービスを自動的にデプロイするために、ビルド前およびビルド後のイベントを追加しました。しかし、いつかこのエラーが発生しました:
ファイル "[CompletPath...]\bin\Debug\Business.Data.dll" を "bin\Debug\Business.Data.dll" にコピーできません。別のプロセスで使用されているため、プロセスはファイル 'bin\Debug\Business.Data.dll' にアクセスできません。
Pre-Build イベントでは、サービスを閉じて、Debug ディレクトリ内のファイルを使用するすべてのタスクを強制終了し、サービスをアンインストールしています。Pre-Build イベントで実行している .bat にコードがあります。
SET executionPath=%~dp0
SET serviceName=%1
SET frameworkPath=%2
SET targetServicePath=%3
SET targetBinPath=%~4
set targetBinPath=%targetBinPath:~0,-2%
net stop %serviceName%
powershell -NonInteractive -executionpolicy Unrestricted -file "%executionPath%\unlockfiles.ps1" "%targetBinPath%"
%frameworkPath%\installutil.exe /u %targetServicePath%
Exit /b 0
サービスをインストールして開始しているビルド後のイベントでは、ビルド時にエラーが発生しているため、これが問題でなくてもコードがあり、ビルド後のイベントが実行されていません。
SET serviceName=%1
SET frameworkPath=%2
SET targetServicePath=%3
%frameworkPath%\installutil.exe /ShowCallStack %targetServicePath%
net start %serviceName%
私はいつも問題を抱えているわけではありません。私は通常、最初にビルドするときに問題を抱えています。ソリューションをクリーニングし、再度ビルドすると、通常はこの後に機能します。