我有一个SSDT数据库项目。我已经设置了一个发布配置文件,将其发布到SQL Server 2012 localdb 实例。我找到了some code that can be used to publish the database programmatically:
首先导入这些:
using Microsoft.Build.Evaluation;
using Microsoft.Build.Logging;
using Microsoft.Build.Framework;
然后发布数据库:
// 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 目标,但这没有明显区别。
为什么程序化选项的性能较差?如何实现与手动发布相同的性能?