SQL Server 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 拡張パックを使用しています。
このメカニズムのクレジットは ジェイミー・トムソン