0

我正在使用BuildManager.Build方法来构建 SQL Server 数据工具/数据层应用程序框架/Visual Studio 数据库项目。同一个项目,当通过 Visual Studio 手动构建相同的配置时,毫无例外地在相对较短的时间内构建,大约 10 秒。但是,当通过 BuildManager.Build 以编程方式构建时,我遇到了一大堆第一次机会异常,所有这些似乎都发生在 antlr 命名空间中。这使得构建过程非常缓慢。这是因为正在执行 BuildManager.Build 的程序正在调试模式下运行吗?有谁知道如何摆脱第一次机会期望并希望加快构建过程?

4

1 回答 1

1

在这两种情况下都会引发第一次机会异常,只是在您执行此操作时,由于某种原因,您作为调试器附加到子进程,这会导致进程因每个异常而冻结,将控制权传递给您的进程可能会忽略它并重新启动应用程序 - 当有很多第一次机会异常时作为调试器运行非常非常缓慢。

抛出异常是因为 SSDT 使用 Antlr(您可能已经猜到了)来解析 T-SQL 并且它发现了它不喜欢的东西。

这样做的关键是找出你为什么作为调试器附加,这对 BuildManager.Build 来说是正常的吗?msdn 文章并不是特别有用。如果您能找到一种方法来运行构建而不附加为调试器,它将使其恢复正常速度。

仅供参考 - 在这种情况下,发布/调试版本不应该有任何区别。

于 2015-03-17T20:31:23.853 回答