将 dacpac 部署为 nuget

问题描述 投票:0回答:1

我正在尝试弄清楚如何将 dacpac 文件作为我们解决方案的 nuget 进行处理。

我们有一个巨大的数据库,由生成 dacpac 的 SSDT 项目创建和处理。

我们希望在 DevOps 中创建一个管道,用于根据特定版本创建 nuget 包,并将其发布到 Artifact。所以每个人都可以下载它并在本地重新创建数据库。

这可能吗?

nuget sql-server-data-tools dacpac
1个回答
0
投票

您可以在 SQL 项目中创建一个 .nuspec 文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<package >
  <metadata>
    <id>My.Database.Dacpac</id>
    <version>1.0.0</version>
    <authors>You</authors>
    <description>Dacpac of My.Database</description>
  </metadata>
    <files>
        <file src="bin\Release\*.dacpac"/>
    </files>
</package>

然后在管道中创建 nuget 并推送它:

  - task: VSBuild@1
    displayName: "Build"
    inputs:
      solution: '**\*.sln'
      configuration: 'Release'
      clean: true
  - task: NuGetCommand@2
    displayName: "Create nuget"
    inputs:
      command: 'pack'
      packagesToPack: '.nuspec'
      configuration: 'Release'
      versioningScheme: 'off'
  - task: DotNetCoreCLI@2
    displayName: "Push nuget"
    inputs:
      command: 'push'
      packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
      nuGetFeedType: 'internal'
      publishVstsFeed: 'Change this to your feed'

要在项目中使用它,请先安装它,然后修改以添加GeneratePathProperty:

<PackageReference Include="My.Database.Dacpac" Version="1.0.1">
    <GeneratePathProperty>true</GeneratePathProperty>
</PackageReference>

然后你必须添加这个:

<ItemGroup>
    <Content Include="$(PkgMy_Database_Dacpac)\My.Database.dacpac">
        <Link>My.Database.dacpac</Link>
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        <Pack>true</Pack>
    </Content>
</ItemGroup>

有了这一切,您将在输出目录中拥有 dacpac 文件,并且在您的解决方案中也将拥有 nuget 中的链接文件。

© www.soinside.com 2019 - 2024. All rights reserved.