Compartilhar via


Compilar um projeto de banco de dados por meio da linha de comando

Embora a extensão Projeto de banco de dados SQL forneça uma interface gráfica do usuário para criar um projeto de banco de dados, também está disponível uma experiência de build em linha de comando para ambientes Windows, macOS e Linux. As etapas para compilar um projeto na linha de comando são diferentes entre projetos SQL no estilo SDK e o formato de projeto SQL anterior que não tinha um estilo de SDK. Este artigo descreve os pré-requisitos e a sintaxe necessários para criar um dacpac por meio de um projeto SQL usando a linha de comando para os dois tipos de projeto SQL.

Projetos SQL no estilo SDK (versão prévia)

Usar Microsoft.Build.Sql com projetos SQL no estilo SDK é o método preferencial para trabalhar com projetos SQL na linha de comando.

Para compilar um projeto SQL com estilo SDK na linha de comando no Windows, macOS ou Linux, use o seguinte comando:

dotnet build /p:NetCoreBuild=true

Observação

Os projetos SQL com estilo SDK estão atualmente em versão prévia.

Projetos de SQL que não têm estilo de SDK

A seção a seguir descreve uma solução alternativa para trabalhar com projetos SQL que não são do estilo SDK usando a linha de comando no Windows, no macOS e no Linux.

Pré-requisitos

  1. Instale e configure a extensão de Projetos de Banco de Dados SQL.

  2. Os dlls do .NET Core a seguir e o arquivo de destino Microsoft.Data.Tools.Schema.SqlTasks.targets são necessários para compilar um projeto de banco de dados SQL por meio de linha de comando em todas as plataformas que dão suporte à extensão do Azure Data Studio para Projetos de Banco de Dados do SQL. Esses arquivos são criados pela extensão durante o primeiro build concluído na interface do Azure Data Studio e colocados na pasta da extensão em BuildDirectory. Por exemplo, no Linux, esses arquivos são colocados em ~\.azuredatastudio\extensions\microsoft.sql-database-projects-x.x.x\BuildDirectory\. Copie esses 11 arquivos em uma pasta nova e acessível ou anote a localização deles. Esse local é chamado de DotNet Core build folder neste documento.

    • Microsoft.Data.SqlClient.dll
    • Microsoft.Data.Tools.Schema.Sql.dll
    • Microsoft.Data.Tools.Schema.SqlTasks.targets
    • Microsoft.Data.Tools.Schema.Tasks.Sql.dll
    • Microsoft.Data.Tools.Utilities.dll
    • Microsoft.SqlServer.Dac.dll
    • Microsoft.SqlServer.Dac.Extensions.dll
    • Microsoft.SqlServer.TransactSql.ScriptDom.dll
    • Microsoft.SqlServer.Types.dll
    • System.ComponentModel.Composition.dll
    • System.IO.Packaging.dll
  3. Se o projeto foi criado no Azure Data Studio, vá diretamente para Compilar projeto por meio da linha de comando. Se o projeto foi criado no SSDT (SQL Server Data Tools), abra o projeto na extensão de Projeto de Banco de Dados do SQL do Azure Data Studio. Abrir o projeto no Azure Data Studio atualiza automaticamente o arquivo sqlproj com três edições, anotadas para seu conhecimento:

    1. Condições de importação
    <Import Condition="'$(NetCoreBuild)' == 'true'" Project="$(NETCoreTargetsPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets"/> 
    <Import Condition="'$(NetCoreBuild)' != 'true' AND '$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
    <Import Condition="'$(NetCoreBuild)' != 'true' AND '$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
    
    1. Referência do pacote
    <ItemGroup>
        <PackageReference Condition="'$(NetCoreBuild)' == 'true'" Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" PrivateAssets="All"/>
    </ItemGroup>
    
    1. Destino limpo, necessário para dar suporte à edição dupla no SSDT (SQL Server Data Tools) e no Azure Data Studio
    <Target Name="AfterClean">
        <Delete Files="$(BaseIntermediateOutputPath)\project.assets.json"/>
    </Target>
    

Compilar projeto por meio da linha de comando

Na pasta completa do .NET, use o seguinte comando:

dotnet build "<sqlproj file path>" /p:NetCoreBuild=true /p:NETCoreTargetsPath="<DotNet Core build folder>"

Por exemplo, em /usr/share/dotnet no Linux:

dotnet build "/home/myuser/Documents/DatabaseProject1/DatabaseProject1.sqlproj" /p:NetCoreBuild=true /p:NETCoreTargetsPath="/home/myuser/.azuredatastudio/extensions/microsoft.sql-database-projects-x.x.x/BuildDirectory"  

Próximas etapas