sql >> Database teknologi >  >> RDS >> Sqlserver

hvordan man bruger msbuild-egenskaber i sqlproj (SQL Server 2012) script

I en sql-server 2012 sqlproj (SSDT-databaseprojekt) bruger du udgivelsesprofiler. Du kan starte med at højreklikke på dit databaseprojekt og vælge 'Udgiv'.

Du kan derefter indstille ønskede muligheder og gemme disse i en såkaldt publiceringsprofil i dit projekt. Dobbeltklik på denne profil starter udgivelsesguiden med de korrekte indstillinger.

I din publiceringsprofil kan du inkludere hårdkodede værdier for sqlcmd-variabler:

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

Hvis det ønskes, kan du opdatere disse med dynamiske værdier under build. I dit 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>

Dette kræver en udvidelse for at opdatere XML. Jeg bruger msbuild-udvidelsespakken.

Credits for denne mekanisme går til Jamie Thomson




  1. Er det sikkert at gemme plaintext-adgangskoder i MySQL *midlertidigt*?

  2. Oracle - Hvordan får jeg den faktiske størrelse af en specifik RÆKKE?

  3. mysql-python installationsfejl:Kan ikke åbne inkludere filen 'config-win.h'

  4. 2 måder at liste alle lagrede procedurer i MySQL