2014-02-10 4 views
3

동일한 솔루션 내에서 빌드하고 생성 된 dacpac을 참조하려는 별도의 데이터베이스 프로젝트가 있습니다. 데이터베이스 프로젝트를 추가하려고하면 빌드가 잘되고 dll은 보조 프로젝트 파일에 추가되지만 dacpac은 추가되지 않습니다.생성 된 데이터베이스 프로젝트를 cs 프로젝트에 생성 된 dacpac을 포함시키는 방법

msbuild를 통해 주 프로젝트에 dacpac을 복사 할 수있는 방법이 있습니까? dacpac이 프로젝트 출력물 중 하나로 포함되도록 sqlproj 파일 또는 csproj 파일을 수정하는 방법이 있어야한다고 생각합니다. msbuild에 대한 지식이 충분하지 않아서 알아 내지 못했습니다.

어떻게 든 '@ (ReferenceCopyLocalPaths)'항목을 말하기 위해 dacpac을 추가해야하지만 나도 알아낼 수 없었습니다. 모든 팁이나 제안을 부탁드립니다.

나는 수행하여 여기 MSBuild - ItemGroup of all bin directories within subdirectories 참조 것 같은 작은 일을 시도 :

(와일드 카드를 추가 할 때) DacPacs 위해 아무것도를 제공하지
<Target Name="AfterBuild"> 
    <Message Text="@(MainAssembly)" /> 
    <!--<DacPacs Include="%(ProjectReference.Directory)**" />--> 
    <ItemGroup> 
     <DacPacs Include="%(ProjectReference.Directory)**/*bin*/*.dac" /> 
    </ItemGroup> 
    <Message Text="@(ReferenceCopyLocalPaths)" /> 
    <Message Text="DacPacs: @(DacPacs)" /> 
    <Message Text="Target Database: $(TargetDatabase)" /> 
    </Target> 

. 또한 sqlproj 파일에서 항목 그룹 중 하나를 참조하려고 시도했지만 비어있는 것으로 나타납니다.

+0

이 방법을 사용 했습니까? – Justin

+0

분명히 아니오 ... 여기에 같은 문제가 있습니다. ( – glacasa

답변

0

프로젝트 속성에서 사전 빌드 이벤트 명령 줄을 추가하여 dacpac 파일의 복사본을 가져올 수 있습니다.

Pre-build event to copy dacpac

또는 당신은 단지 csproj에 추가 할 수 있습니다 : 데이터베이스 프로젝트가 처음 만들어진 경우 종속성을 추가해야하므로

<PropertyGroup> 
    <PreBuildEvent>copy "$(SolutionDir)DatabaseProject\bin\$(ConfigurationName)\DatabaseProject.dacpac" "$(ProjectDir)\DatabaseProject.dacpac"</PreBuildEvent> 
</PropertyGroup> 

이 만 작동합니다. 솔루션을 오른쪽 클릭하고 Project Dependencies...을 선택한 다음 기본 프로젝트를 선택하고 데이터베이스 프로젝트에 의존하는지 확인하십시오.

enter image description here