V sql serveru 2012 sqlproj (databázový projekt SSDT) používáte profily publikování. Můžete začít kliknutím pravým tlačítkem myši na projekt databáze a výběrem 'Publikovat'.
Poté můžete nastavit požadované možnosti a uložit je do tzv. publikačního profilu ve vašem projektu. Poklepáním na tento profil se spustí průvodce publikováním se správnými nastavenými možnostmi.
Ve svém profilu publikování můžete zahrnout pevně zakódované hodnoty pro proměnné sqlcmd:
<ItemGroup>
<SqlCmdVariable Include="ProjectDirectory">
<Value>UNKNOWN</Value>
</SqlCmdVariable>
</ItemGroup>
V případě potřeby je můžete během sestavování aktualizovat dynamickými hodnotami. Ve vašem projektu 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>
To vyžaduje rozšíření pro aktualizaci XML. Používám rozšiřující balíček msbuild.
Poděkování za tento mechanismus jde na Jamie Thomson