SSDT データベース プロジェクトがあります。SQL Server 2012 localdbインスタンスに発行する発行プロファイルを設定しました。プログラムでデータベースを公開するために使用できるコードをいくつか見つけました。
最初にこれらをインポートします。
using Microsoft.Build.Evaluation;
using Microsoft.Build.Logging;
using Microsoft.Build.Framework;
次に、DB を公開します。
// Create a logger.
FileLogger logger = new FileLogger();
logger.Parameters = @"logfile=Northwind.msbuild.log";
// Set up properties.
var projects = ProjectCollection.GlobalProjectCollection;
projects.SetGlobalProperty("Configuration", "Debug");
projects.SetGlobalProperty("SqlPublishProfilePath", @"Northwind.publish.xml");
// Load and build project.
var dbProject = ProjectCollection.GlobalProjectCollection.LoadProject(@"Northwind.sqlproj");
dbProject.Build(new[]{"Build", "Publish"}, new[]{logger});
Visual Studio 2010 を使用して、コードに示されている発行プロファイルを使用してデータベースを手動で発行すると、約 4 ~ 10 秒かかります。ただし、このコードを実行してプログラムで同じことを行うと、約 40 秒かかります。
Buildターゲットを削除しようとしましたが、これは顕著な違いはありませんでした。
プログラマティック オプションのパフォーマンスが低いのはなぜですか? 手動パブリッシュと同じパフォーマンスを達成するにはどうすればよいですか?