如何在 dotnet pack nuget 包中包含来自构建输出 (dacpac) 的非 dll 文件?

How do I include a non-dll file from build output (dacpac) in a dotnet pack nuget package?

我目前有一个 .NET Standard 2.0 库,它是针对 sql 数据库的存储库。我在该特定数据库的同一解决方案中也有一个 .sqlproj 项目。使用 2.2 cli 上的 dotnet pack 命令构建、打包存储库库并将其从我们的构建服务器 (Azure DevOps) 推送到我们的 nuget 存储库。我想将数据库项目中的 dacpac 作为存储库 nuget 包的一部分包含在内,以便该包的使用者发布的版本可以部署 dacpac 更改。我计划确保被覆盖的版本晚于部署时的包版本。

我可以使用构建前目标将 dacpac 文件添加到存储库项目的构建输出中

<Target Name="mydb" AfterTargets="Build"> <Exec Command="XCOPY /Y /R ..\db\bin$(ConfigurationName)\mydb.dacpac $(TargetDir)" /> </Target>

我目前的问题是,虽然文件复制了,但它没有包含在生成的 nuget 文件中 dotnet pack repository.csproj

我在MS文档的深处找到了答案: 除了目标之外,我还需要添加一个内容来包含我刚刚复制的文件。

<ItemGroup>
    <Content Include="$(TargetDir)\mydb.dacpac" >
      <Pack>true</Pack>
      <PackagePath>\dacpacs\</PackagePath>
    </Content>
  </ItemGroup>  

https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-visual-studio?tabs=netcore-cli