2017-11-01 8 views
1

VSTS를 사용하여 데이터베이스에 배포하려고합니다. 문제는 dacpac 파일을 선택하여 배포해야하는 단계 중 하나입니다. Azure SQL 서버에 연결했지만 실패합니다. 그 단계에서 을 사용하고 있습니다. Microsoft에서 VSTS로 제공하는 "Azure SQL 실행 : DacpacTask"을 사용하고 있습니다. 거기는 "DACPAC가 파일"이라고하는 그것을 할 신청 및 설명서는 다음과 같이 사용 말한다 :VSTS 빌드가 픽업되지 않음 dacpac 파일 (클라우드의 호스트 에이전트)

$(agent.releaseDirectory)\AdventureWorksLT.dacpac

그러나 그것은 나에게 아래의 오류 준 : 그래서

No files were found to deploy with search pattern d:\a\1\s\$(agent.releaseDirectory)\AdventureWorksLT.dacpac

을 나는 부정 행위를했고, 거기에 아래의 값을 넣어 :

d:\a\1\s\AdventureWorksLT.dacpac

이 작업을 수행하지만 내가 environm를 사용할 필요로 분명 영원히 작동하지 않습니다를 같은 변수 :

$(agent.releaseDirectory)\AdventureWorksLT.dacpac

어떤 제안?

+0

나는 정말 상대 디렉토리를 사용할 수 있다고 확신하므로 실제로는 필요 없다. – 4c74356b41

답변

3

동일한 문제가있었습니다. 자세한 문서를 찾을 수 없었지만 실험을 통해 내가 찾은 것입니다.

DACPAC이 솔루션 작성 작업의 일부로 만들어 졌다고 가정합니다. 빌드가 완료되고 DACPAC이 만들어지면 $ (System.DefaultWorkingDirectory) 디렉터리의 하위 폴더에 있습니다.

분명히 Azure SQL 데이터베이스 배포 작업은 $ (System.DefaultWorkingDirectory) 폴더에 액세스 할 수 없습니다. 따라서 파일은 액세스 할 수있는 어딘가에 복사해야합니다. 그래서 내가 한 일은 다음과 같습니다.

  1. Visual Studio 빌드 태스크는 DACPAC을 포함하여 솔루션을 빌드합니다. 결과로 생성되는 DACPAC은 $ (System.DefaultWorkingDirectory) 하위 폴더에 저장됩니다.
  2. 다음 단계로 파일 복사 태스크를 추가하십시오. 원본 폴더 속성은 "$ (System.DefaultWorkingDirectory)"이어야합니다. Contents 속성은 "**/YourDacPacFilename.dacpac"이어야합니다. 대상 폴더는 $ (build.artifactstagingdirectory) 여야합니다. "** /"는 모든 하위 폴더에서 일치하는 파일을 검색하도록 VSTS에 지시합니다.
  3. Azure SQL 데이터베이스 배포 작업을 추가하여 실제 DACPAC를 배포합니다. DACPAC 파일은 $ (build.artifactstagingdirectory)에 있습니다.
+0

천재 야! 나는 일을 끝냈다. 나는 운명을 다음과 같이 바꾼다. $ (build.artifactstagingdirectory) \ {myproject name} \ bin \ Release \ {my file name} .dacpac –

+0

다행이다. 제쳐두고 빌드에 명령 줄 작업을 추가하고 dir 명령을 사용하여 빌드 파이프 라인이 파일을 배치하는 위치를 찾는 것이 매우 유용하다는 것을 알았습니다. 로그의 출력을보고 무슨 일이 일어나는지 알 수 있습니다. –