コマンド ラインからデータベース プロジェクトをビルドする

SQL Database Project 拡張機能にはデータベース プロジェクトをビルドするためのグラフィカル ユーザー インターフェイスがありますが、Windows、macOS、Linux 環境ではコマンド ラインのビルド エクスペリエンスも利用できます。 コマンド ラインからプロジェクトをビルドする手順は、SDK スタイルの SQL プロジェクトと、以前の SDK スタイル以外の SQL プロジェクト形式では異なります。 この記事では、両方の SQL プロジェクト タイプについて、コマンド ラインで SQL プロジェクトから dacpac をビルドするために必要な前提条件と構文の概要について説明します。

SDK スタイルの SQL プロジェクト (プレビュー)

コマンド ラインから SQL プロジェクトを操作するには、SDK スタイルの SQL プロジェクトでは Microsoft.Build.Sql を使用する方法をお勧めします。

Windows、macOS、または Linux のコマンド ラインから SDK スタイルの SQL プロジェクトをビルドするには、次のコマンドを使用します。

dotnet build /p:NetCoreBuild=true

注意

SDK スタイルの SQL プロジェクトは現在プレビュー段階です。

SDK スタイル以外の SQL プロジェクト

次のセクションでは、Windows、macOS、Linux のコマンド ラインから SDK スタイル以外の SQL プロジェクトを操作する場合の回避策について説明します。

前提条件

  1. SQL Database プロジェクトの拡張機能がインストールおよび構成されています。

  2. SQL Database プロジェクト用の Azure Data Studio 拡張機能でサポートされているすべてのプラットフォームでコマンド ラインから SQL データベース プロジェクトをビルドするには、次の .NET Core DLL とターゲット ファイル Microsoft.Data.Tools.Schema.SqlTasks.targets が必要です。 これらのファイルは、Azure Data Studio インターフェイスで実行された最初のビルドの間に拡張機能によって作成され、BuildDirectory の下の拡張機能のフォルダーに配置されます。 たとえば、Linux では、これらのファイルは ~\.azuredatastudio\extensions\microsoft.sql-database-projects-x.x.x\BuildDirectory\ に配置されます。 これら 11 個のファイルを新しいアクセス可能なフォルダーにコピーするか、場所を記録しておきます。 このドキュメントでは、この場所を DotNet Core build folder と呼びます。

    • 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. プロジェクトが Azure Data Studio で作成された場合は、「コマンド ラインからプロジェクトをビルドする」に進みます。 プロジェクトが SQL Server Data Tools (SSDT) で作成された場合は、Azure Data Studio SQL Database プロジェクト拡張機能でプロジェクトを開きます。 Azure Data Studio でプロジェクトを開くと、以下に示す 3 つの編集で sqlproj ファイルが自動的に更新されます。

    1. インポート条件
    <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. パッケージ リファレンス
    <ItemGroup>
        <PackageReference Condition="'$(NetCoreBuild)' == 'true'" Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" PrivateAssets="All"/>
    </ItemGroup>
    
    1. SQL Server Data Tools (SSDT) と Azure Data Studio でのデュアル編集をサポートするために必要なクリーン ターゲット
    <Target Name="AfterClean">
        <Delete Files="$(BaseIntermediateOutputPath)\project.assets.json"/>
    </Target>
    

コマンド ラインからプロジェクトをビルドする

完全な .NET フォルダーから、次のコマンドを使用します。

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

たとえば、Linux では /usr/share/dotnet からです。

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"  

次のステップ