I en sql-server 2012 sqlproj (SSDT-databasprojekt) använder du publiceringsprofiler. Du kan börja med att högerklicka på ditt databasprojekt och välja "Publicera".
Du kan sedan ställa in önskade alternativ och spara dessa i en så kallad publiceringsprofil i ditt projekt. Om du dubbelklickar på den här profilen startas publiceringsguiden med rätt alternativ.
I din publiceringsprofil kan du inkludera hårdkodade värden för sqlcmd-variabler:
<ItemGroup>
<SqlCmdVariable Include="ProjectDirectory">
<Value>UNKNOWN</Value>
</SqlCmdVariable>
</ItemGroup>
Om så önskas kan du uppdatera dessa med dynamiska värden under bygget. I ditt 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>
Detta kräver ett tillägg för att uppdatera XML. Jag använder tilläggspaketet msbuild.
Tack till denna mekanism går till Jamie Thomson