同僚からの役立つリンクをたどって、展開のためProcess.Startに実行するために使用することになりました。sqlpackage.exeVisual Studio の観点からは期待したほどきれいではありませんが、仕事は完了しています。私のブートストラップは次のようになります。
private const string SQL_PUBLISH_COMMAND = @"C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe";
private const string SQL_PUBLISH_COMMAND_ARGUMENTS = @"/Action:Publish /SourceFile:C:\Data\Code\NewEdCo\Domain\NewEdCo.Database.SQLExpress\bin\Debug\NewEdCo.Database.SQLExpress.dacpac /Properties:CreateNewDatabase=True /TargetServerName:hactar\sqlexpress2012 /TargetDatabaseName:NewEdCoTest";
private void DeployTestDatabase()
{
    var procInfo = new ProcessStartInfo
    {
        Arguments = SQL_PUBLISH_COMMAND_ARGUMENTS,
        CreateNoWindow = true,
        ErrorDialog = false,
        FileName = SQL_PUBLISH_COMMAND,
        RedirectStandardOutput = true,
        UseShellExecute = false
    };
    var proc = new Process
    {
        StartInfo = procInfo
    };
    proc.Start();
    var result = proc.StandardOutput.ReadToEnd();
}
[TestInitialize]
public void BootstrapTests()
{
    DeployTestDatabase();
}
[TestCleanup]
public void TearDownTests()
{
    DeployTestDatabase();
}
標準出力の読み取りに使用されるオプションProcessStartInfo(まだ何もしていませんが) は、タスクの同期を維持するためにあります。そうすれば、テストは互いに踏みにじられません。これにより、統合テストの実行時間が長くなりますが、私のニーズには問題ありません。
前後とも完全リフレッシュしているのが分かります。検査数が増えて長くなりすぎたら、考え直します。しかし、今のところ、テスト前にリフレッシュし、テスト後に痕跡を残さないようにしたいと考えています。
MSDN には、 のオプションの広範なリストがありますsqlpackage.exe。