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