sql >> Databasteknik >  >> RDS >> Sqlserver

hur man använder msbuild-egenskaper i sqlproj (SQL Server 2012) skript

I en sql-server 2012 sqlproj (SSDT-databasprojekt) använder du publiceringsprofiler. Du kan börja med att högerklicka på ditt databasprojekt och välja "Publicera".

Du kan sedan ställa in önskade alternativ och spara dessa i en så kallad publiceringsprofil i ditt projekt. Om du dubbelklickar på den här profilen startas publiceringsguiden med rätt alternativ.

I din publiceringsprofil kan du inkludera hårdkodade värden för sqlcmd-variabler:

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

Om så önskas kan du uppdatera dessa med dynamiska värden under bygget. I ditt msbuild-projekt:

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

Detta kräver ett tillägg för att uppdatera XML. Jag använder tilläggspaketet msbuild.

Tack till denna mekanism går till Jamie Thomson




  1. Logga varje MySQL-fråga till en fil genom att aktivera den allmänna inloggningen MAMP

  2. Hur man skyddar MySQL-databaser från Ransomware-kampanjer

  3. MySQL autoinkrement-kolumn hoppar med 10- varför?

  4. Beräknar skillnaden mellan två tidsstämplar i Oracle i millisekunder