Di sql server 2012 sqlproj (proyek database SSDT) Anda menggunakan profil penerbitan. Anda dapat memulai dengan mengklik kanan proyek database Anda dan memilih 'Terbitkan'.
Anda kemudian dapat mengatur opsi yang diinginkan dan menyimpannya dalam apa yang disebut profil penerbitan di proyek Anda. Mengklik dua kali profil ini akan meluncurkan wizard penerbitan dengan kumpulan opsi yang benar.
Di profil publikasi Anda, Anda dapat menyertakan nilai hard-code untuk variabel sqlcmd:
<ItemGroup>
<SqlCmdVariable Include="ProjectDirectory">
<Value>UNKNOWN</Value>
</SqlCmdVariable>
</ItemGroup>
Jika diinginkan, Anda dapat memperbarui ini dengan nilai dinamis selama pembuatan. Dalam proyek msbuild Anda:
<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>
Ini memerlukan ekstensi untuk memperbarui XML. Saya menggunakan paket ekstensi msbuild.
Kredit untuk mekanisme ini pergi ke Jamie Thomson