W sql server 2012 sqlproj (projekt bazy danych SSDT) używasz profili publikowania. Możesz zacząć, klikając prawym przyciskiem myszy projekt bazy danych i wybierając „Opublikuj”.
Następnie możesz ustawić żądane opcje i zapisać je w tak zwanym profilu publikacji w swoim projekcie. Dwukrotne kliknięcie tego profilu uruchamia kreatora publikowania z ustawionymi poprawnymi opcjami.
W swoim profilu publikowania możesz dołączyć zakodowane na stałe wartości zmiennych sqlcmd:
<ItemGroup>
<SqlCmdVariable Include="ProjectDirectory">
<Value>UNKNOWN</Value>
</SqlCmdVariable>
</ItemGroup>
W razie potrzeby możesz zaktualizować je za pomocą wartości dynamicznych podczas kompilacji. W twoim projekcie 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>
Wymaga to rozszerzenia do aktualizacji kodu XML. Używam pakietu rozszerzeń msbuild.
Podziękowania dla tego mechanizmu trafiają do Jamie Thomson