2014-02-10 140 views
3

我有一個單獨的數據庫項目,我想在同一個解決方案中構建,然後引用創建的dacpac。當我嘗試添加數據庫項目時,它生成的很好,並將dll添加到二級項目文件中,但dacpac不是。如何將創建的數據庫項目創建dacpac到cs項目

有沒有一種方法可以將dacpac通過msbuild複製到我的主項目中?我一直在想,應該有辦法修改sqlproj文件或csproj文件,以便將dacpac作爲項目輸出之一包含在內。我對msbuild的知識並不廣泛,我還沒有弄明白。

在我看來,我需要添加dacpac莫名其妙地說'@(ReferenceCopyLocalPaths)'項目,但我一直無法弄清楚。任何提示或建議,將不勝感激。

我想這樣做有點像什麼是在這裏做MSBuild - ItemGroup of all bin directories within subdirectories引用了一句:

<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> 

這給沒有爲DacPacs(添加通配符時)。此外,我嘗試引用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