sql >> Database >  >> RDS >> Sqlserver

hoe msbuild-eigenschappen te gebruiken in sqlproj (SQL Server 2012)-script

In een sql server 2012 sqlproj (SSDT database project) gebruik je publicatieprofielen. U kunt beginnen door met de rechtermuisknop op uw databaseproject te klikken en 'Publiceren' te kiezen.

U kunt vervolgens gewenste opties instellen en deze opslaan in een zogenaamd publicatieprofiel in uw project. Dubbelklikken op dit profiel start de publicatiewizard met de juiste opties ingesteld.

In uw publicatieprofiel kunt u hardgecodeerde waarden voor sqlcmd-variabelen opnemen:

<ItemGroup>
    <SqlCmdVariable Include="ProjectDirectory">
        <Value>UNKNOWN</Value>
    </SqlCmdVariable>
</ItemGroup>

Indien gewenst kunt u deze tijdens het bouwen bijwerken met dynamische waarden. In uw msbuild-project:

<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>

Dit vereist een extensie om de XML bij te werken. Ik gebruik het msbuild uitbreidingspakket.

Credits voor dit mechanisme gaan naar Jamie Thomson




  1. tabellen schrijven naar Postgresql met behulp van rPostgreSQL wanneer de databasenaam volledig in hoofdletters is

  2. Panda's:bestanden lezen en schrijven

  3. Is het mogelijk om een ​​kolom te maken met een UNIX_TIMESTAMP standaard in MySQL?

  4. Node.js + MySQL - transacties afhandelen