在Visual Studio数据库项目中,“Build”、“Compile”和“None”构建操作的区别。

10
虽然我可以在网络上找到大量关于 Visual Studio 2012 数据库项目中 SQL 脚本的 PreDeploy 和 PostDeploy Build Action 的信息,并且我了解 None 不会在部署时编译或包含脚本。但请问是否有人能明确建议或引导我阅读一篇明确定义 Build 和 Compile 细微差别的文章呢?
我粗略的推断是这两个都会针对模式进行编译,但只有 Build 才会被部署。这正确吗?
我的目标是验证我的种子脚本与当前架构的正确设置(并在无效的架构结构上引起构建错误),但不要在数据库发布或模式比较会话中部署它们。

顺便提一下,这篇详细的回答并不适用于数据库项目的情况。 - Dib
在后部署/预部署脚本的上下文中,“Build”只允许您有一个。其余的是该脚本的“包含”文件。您不想尝试将这些文件设置为“构建”,因为编译器会尝试将它们构建为表格/视图/其他对象。我以前没有尝试过将它们设置为编译,所以不知道那会发生什么。我通常将它们保留为“无”,并在编写时仔细检查它们。您可以在它们周围编写一些try/catch逻辑来帮助捕获错误。除非您将它们包括在内,否则它们不会随DB发布一起部署。 - Peter Schott
2个回答

4
在数据库项目中,“Build”用于SQL文件,“Compile”用于C#或VB(即SQL CLR)文件。构建数据库项目时,输出是一个dacpac文件,其中包含已处理的“Build” SQL文件以及一个包含已处理的“Compile” C#或VB文件的.NET程序集(dll)文件。
标记为“None”的文件将被忽略。

0

我刚刚通过艰难的方式发现,一个拼写错误,例如“Built”(而不是“Build”),会像“None”一样起作用。我还没有确认,但是假设任何不匹配有效值的单词都将被视为“None”,并且构建将跳过它。

附注:我认为我可能更喜欢在未知值上失败,但是也应该很容易编写脚本来检测它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接