이 좋아 구축 한 후 Windows 서비스를 배포, 이것은 내가 원하는 무엇 -은 MSBuild는 - 자동
우리는 Windows 서비스를 가지고 우리는 모든 성공적인 CI 빌드 후 테스트 환경이 서비스의 배포를 자동화 할 - 이를 위해 우리는 다음과 같은 방법을 생각 -
- (의존성과 함께) Windows 서비스 프로젝트를 빌드
- 중지 Windows 서비스
- 복사 윈도우의 Servi에 출력 폴더에서 프로젝트 출력 CE 파일 경로
- 시작 서비스
그러나, 현재 내가 Windows 서비스의 시작 및 중지에 대한 문제에 직면하고있다. 내가 직접 명령 줄 모두 노력이 PowerShell을 명령뿐만 아니라 명령
<!-- TODO: do this using Powershell instead of normal commandline so that it can be executed on remote machines as well -->
<Exec Command="Net Stop CreditProcessing" />
<!-- Exec Command="$(PowerShellExe) -NoProfile -Noninteractive -command "&{ Stop-Service CreditProcessing }"" /-->
<!-- TODO: The destination needs to come from the env variable or rsp file? -->
<Copy
SourceFiles="@(WindowsServiceFilesToDeploy)"
DestinationFiles="@(WindowsServiceFilesToDeploy->'D:\WindowsServices\Credit Processing Service%(RecursiveDir)%(Filename)%(Extension)')" />
<Exec Command="Net Start CreditProcessing" />
<!--Exec Command="$(PowerShellExe) -NoProfile -Noninteractive -command Start-Service CreditProcessing" /-->
-
이는 MSBuild에서 조각입니다.
A)는이 나는 일반 명령이 빌드를 실행하려고 할 때 직면하는 문제 - 서비스가 시작/중지하는 데 시간이 걸리고 빌드가 충분히 기다리지 않고 오류를보고하고
을 중지"... 서비스를 시작할 수 없습니다". 때로는
또는 "오류를보고하지 않은 서비스"
중지 "이 서비스는 현재의 상태로 제어 할 수 없습니다."
우리가 즉시 서비스를 확인하면 "시작"단계에 있고 곧 "시작"단계로 이동합니다. 빌드를 만드는 방법은 조금 더 참을성이 있습니까? 명령 프롬프트에서 직접 실행하는 경우 명령이 수행하지 않습니다.
그냥 빌드 로그에 파워 쉘 프롬프트를 열고 다음 단지 아무것도
을한다 -B)이 내가 위의 PowerShell을 명령 (현재 코드에서 주석)을 사용하는 경우 우리가 직면 한 문제
이러한 문제 (적어도 하나 이상)를 피할 수 있습니까? Powershell 경로가 잘 작동한다고 가정하면 더 좋다고 생각하지만 제안은 할 수 있습니다.
다른 몇 가지 질문 -
우리는 (이 CI 빌드가 발생되는 경우는 제외) 원격 시스템에서 (중지하고 다시 시작 따라서 등) 서비스를 배포 할이 - 어쨌든이 수행 할 수 있습니다 ?
서비스가 이미 실행 중인지 확인하고 실행중인 경우에만 중지하는 방법이 있습니까? 이 중지 우리가 다시 중지하려고하는 경우, 그것은 줄 것이다
$ (PowerShell)을 정의하는 방법을 게시 할 수 있습니까? 스크린 샷을 보며 마치 powershell.exe의 경로 뒤에 개행 문자가 삽입 된 것처럼 보입니다. 이것은 당신이보고있는 행동을 설명 할 수 있습니다. – JohnL
예! 그거였다!! @ JohnL 당신이 답변을 넣어 줄 수 있도록 upvote과 그것을 표시 할 수 있습니까? !! –
done :) 다행스럽게도 도움이 될 수 있습니다. – JohnL