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

come usare le proprietà msbuild nello script sqlproj (SQL Server 2012).

In un SQL Server 2012 sqlproj (progetto di database SSDT) ​​si utilizzano i profili di pubblicazione. Puoi iniziare facendo clic con il pulsante destro del mouse sul progetto del database e scegliendo "Pubblica".

È quindi possibile impostare le opzioni desiderate e salvarle in un cosiddetto profilo di pubblicazione nel progetto. Facendo doppio clic su questo profilo viene avviata la procedura guidata di pubblicazione con le opzioni corrette impostate.

Nel tuo profilo di pubblicazione puoi includere valori hardcoded per le variabili sqlcmd:

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

Se lo desideri, puoi aggiornarli con valori dinamici durante la compilazione. Nel tuo progetto 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>

Ciò richiede un'estensione per aggiornare l'XML. Uso il pacchetto di estensione msbuild.

I crediti per questo meccanismo vanno a Jamie Thomson