既存の SQL Server 2008 r2 .dbproj を SQL Server 2012 .sqlproj にアップグレードしました (SQL Server Data Tools を使用)。
以前は、プロジェクトで SQLCMD 変数を定義し、次の要素を追加して msbuild 値を使用するようにプロジェクト ファイルを編集して値を定義することができました。
<ItemGroup>
<SqlCommandVariableOverride Include="ProjectDirectory=$(MSBuildProjectDirectory)" />
</ItemGroup>
これを PostDeployment スクリプトで次のように使用できます。
SELECT * INTO dbo.MyTable FROM dbo.MyTable WHERE 1=2
BULK INSERT dbo.MyTable
FROM '$(ProjectDirectory)\data\dbo.MyTable.dat'
WITH (DATAFILETYPE = 'widenative')
ただし、アップグレード後、これは機能しなくなったようです。
同じエントリを新しい sqlproj に追加しようとしましたが、発行機能がそれを取得していないようで、値を指定する必要があります。を指定する$(MSBuildProjectDirectory)
と、文字どおりに解釈されて失敗します。
新しい体制の下で、ローカル ファイルパスを指定したり、msbuild 値を使用したりするためのメカニズムは何ですか?