Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

como usar as propriedades do msbuild no script sqlproj (SQL Server 2012)


Em um sql server 2012 sqlproj (projeto de banco de dados SSDT) ​​você usa perfis de publicação. Você pode começar clicando com o botão direito do mouse em seu projeto de banco de dados e escolhendo 'Publicar'.

Você pode então definir as opções desejadas e salvá-las em um chamado perfil de publicação em seu projeto. Clicar duas vezes neste perfil inicia o assistente de publicação com as opções corretas definidas.

Em seu perfil de publicação, você pode incluir valores codificados para variáveis ​​sqlcmd:
<ItemGroup>
    <SqlCmdVariable Include="ProjectDirectory">
        <Value>UNKNOWN</Value>
    </SqlCmdVariable>
</ItemGroup>

Se desejar, você pode atualizá-los com valores dinâmicos durante a compilação. No seu projeto msbuild:
<Target Name="SetProjectDirectoryInPublishXml">
    <ItemGroup>
        <Namespaces Include="nsMsbuild">
            <Prefix>nsMsbuild</Prefix>
            <Uri>http://schemas.microsoft.com/developer/msbuild/2003</Uri>
        </Namespaces>
    </ItemGroup>
    <ItemGroup>
        <SSDTPublishFiles Include="$(SolutionBinFolder)\**\*.publish.xml" />
    </ItemGroup>
    <MSBuild.ExtensionPack.Xml.XmlFile Condition="%(SSDTPublishFiles.Identity) != ''"
                                   TaskAction="UpdateElement"
                                   File="%(SSDTPublishFiles.Identity)"
                                   Namespaces="@(Namespaces)" 
                                   XPath="//nsMsbuild:SqlCmdVariable[@Include='ProjectDirectory']/nsMsbuild:Value" 
                                   InnerText="$(MSBuildProjectDirectory)"/>
</Target>

Isso requer uma extensão para atualizar o XML. Eu uso o pacote de extensão msbuild.

Os créditos para este mecanismo vão para Jamie Thomson