C# 如何将已创建的数据库项目(已创建的dacpac)包含到cs项目中

C# 如何将已创建的数据库项目(已创建的dacpac)包含到cs项目中,c#,msbuild,sqlproj,C#,Msbuild,Sqlproj,我有一个单独的数据库项目,我想在同一个解决方案中构建它,然后引用创建的dacpac。当我尝试添加数据库项目时,它构建得很好,dll被添加到辅助项目文件中,但dacpac没有 有没有办法通过msbuild将dacpac复制到主项目中?我一直认为应该有一种方法来修改sqlproj文件或csproj文件,以便将dacpac作为项目输出之一。我对msbuild的了解并不广泛,我还没有弄明白它 在我看来,我需要以某种方式添加dacpac来表示“@(ReferenceCopyLocalPaths)”项,但我

我有一个单独的数据库项目,我想在同一个解决方案中构建它,然后引用创建的dacpac。当我尝试添加数据库项目时,它构建得很好,dll被添加到辅助项目文件中,但dacpac没有

有没有办法通过msbuild将dacpac复制到主项目中?我一直认为应该有一种方法来修改sqlproj文件或csproj文件,以便将dacpac作为项目输出之一。我对msbuild的了解并不广泛,我还没有弄明白它

在我看来,我需要以某种方式添加dacpac来表示“@(ReferenceCopyLocalPaths)”项,但我还没有弄明白。如有任何提示或建议,将不胜感激

我试着做一些类似于这里引用的事情:

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


这不会为DACPAC提供任何信息(添加通配符时)。我还尝试引用sqlproj文件中的一个项目组,但结果为空:

在项目属性中,可以添加预构建事件命令行以获取dacpac文件的副本

或者您可以将其添加到csproj中:

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

复制“$(SolutionDir)DatabaseProject\bin\$(ConfigurationName)\DatabaseProject.dacpac”“$(ProjectDir)\DatabaseProject.dacpac”
这仅在首先构建数据库项目时有效,因此您应该添加依赖项。右键单击解决方案并选择
项目依赖项…
,然后选择主项目并检查它是否依赖于数据库项目


将此添加到您的csproj中:


DatabaseProject.dacpac
保存最新

你的工作正常了吗?显然没有。。。我在这里也有同样的问题:(那太好了,但是当我切换到发布配置时,它将不起作用。也许我找到了一个解决方案。您可以从另一个配置中复制一个文件,以便在DatabaseProject生成后事件中调试:
如果“$(配置)”NEQ“Debug”xcopy/y DatabaseProject.dacpac..\Debug\
你是对的,在我的回答中,它目前被硬编码为Debug;根据当前的sln配置,你可能可以使用一个占位符作为输出路径,但我没有走那么远,我只是希望我们可以在某个时候点燃sln中的dacpac,忘记曾经发生过的事情。不寒而栗.