В sql сървър 2012 sqlproj (SSDT проект за база данни) използвате профили за публикуване. Можете да започнете, като щракнете с десния бутон върху вашия проект за база данни и изберете „Публикуване“.
След това можете да зададете желаните опции и да ги запишете в така наречения профил за публикуване във вашия проект. Двойното щракване върху този профил стартира съветника за публикуване с правилния набор от опции.
Във вашия профил за публикуване можете да включите твърдо кодирани стойности за sqlcmd променливи:
<ItemGroup>
<SqlCmdVariable Include="ProjectDirectory">
<Value>UNKNOWN</Value>
</SqlCmdVariable>
</ItemGroup>
Ако желаете, можете да ги актуализирате с динамични стойности по време на изграждане. Във вашия проект 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>
Това изисква разширение за актуализиране на XML. Използвам пакета с разширения msbuild.
Кредитите за този механизъм отиват на Джейми Томсън