我有一个 SSDT 数据库项目。我设置了一个发布配置文件,将其发布到 SQL Server 2012 localdb实例。我发现了一些可用于以编程方式发布数据库的代码:
首先导入这些:
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目标,但这并没有产生明显的差异。
为什么程序化选项的性能较差?我可以做些什么来获得与手动发布相同的性能?