In einem SQL Server 2012 sqlproj (SSDT-Datenbankprojekt) verwenden Sie Veröffentlichungsprofile. Sie können beginnen, indem Sie mit der rechten Maustaste auf Ihr Datenbankprojekt klicken und „Veröffentlichen“ wählen.
Anschließend können Sie gewünschte Optionen einstellen und diese in einem sogenannten Veröffentlichungsprofil in Ihrem Projekt speichern. Durch Doppelklicken auf dieses Profil wird der Veröffentlichungsassistent mit den richtigen Optionen gestartet.
In Ihrem Veröffentlichungsprofil können Sie hartcodierte Werte für sqlcmd-Variablen einfügen:
<ItemGroup>
<SqlCmdVariable Include="ProjectDirectory">
<Value>UNKNOWN</Value>
</SqlCmdVariable>
</ItemGroup>
Bei Bedarf können Sie diese während des Builds mit dynamischen Werten aktualisieren. In Ihrem 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>
Dies erfordert eine Erweiterung, um das XML zu aktualisieren. Ich verwende das msbuild-Erweiterungspaket.
Credits für diesen Mechanismus gehen zu Jamie Thomson