Trong sql server 2012 sqlproj (dự án cơ sở dữ liệu SSDT), bạn sử dụng hồ sơ xuất bản. Bạn có thể bắt đầu bằng cách nhấp chuột phải vào dự án cơ sở dữ liệu của mình và chọn 'Xuất bản'.
Sau đó, bạn có thể đặt các tùy chọn mong muốn và lưu các tùy chọn này trong một cái gọi là hồ sơ xuất bản trong dự án của bạn. Nhấp đúp vào cấu hình này sẽ khởi chạy trình hướng dẫn xuất bản với các tùy chọn chính xác được đặt.
Trong hồ sơ xuất bản của mình, bạn có thể bao gồm các giá trị được mã hóa cứng cho các biến sqlcmd:
<ItemGroup>
<SqlCmdVariable Include="ProjectDirectory">
<Value>UNKNOWN</Value>
</SqlCmdVariable>
</ItemGroup>
Nếu muốn, bạn có thể cập nhật các giá trị này bằng các giá trị động trong quá trình xây dựng. Trong dự án msbuild của bạn:
<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>
Điều này yêu cầu một phần mở rộng để cập nhật XML. Tôi sử dụng gói tiện ích mở rộng msbuild.
Tín dụng cho cơ chế này được chuyển đến Jamie Thomson