根据配置设置从构建中排除某些数据库对象

时间:2014-07-02 15:22:45

标签: visual-studio-2012 sql-server-data-tools

我在带有SSDT的Visual Studio 2012中有一个数据库项目(撰写本文时最新)。在数据库项目中,我有一个名为“ UNITTEST ”的模式,其中包含大量存储过程,这些存储过程为单元测试创​​建,销毁和提供其他帮助程序功能。我们这样做是因为它使我们能够集中控制测试数据,而不是在每个单元测试中。现在这很好,但是,我不希望将此架构或此架构内的任何对象发布到生产中。

所以我的问题..有没有办法阻止SSDT / VS2012在生产构建部署脚本中包含UNITTEST模式?

我认为根据解决方案配置设置和发布配置文件,应该有办法实现。如果我的配置设置为“Release”,那么我希望构建执行有点不同。

构建对我来说很新鲜。我发现了这个问题: build-different-scripts-depending-on-build-configuration ,但我似乎无法得到解决问题的答案。这个问题也没有用,虽然它非常相似: bind-the-deploy-and-publish-destination

还有其他人管理过这样的事吗?我团队中的其他开发人员只是修改已发布的脚本以删除这些对象,但我讨厌手动工作,有一个解决方案! :)

全部谢谢!

2 个答案:

答案 0 :(得分:2)

部分/复合项目在这里可能很有用。主项目包含您的应用程序运行所需的所有数据库对象。部分项目引用主项目,但随后包含所有“测试”代码。

以下是Jamie Thomson的几个选项: http://sqlblog.com/blogs/jamie_thomson/archive/2013/03/10/deployment-of-client-specific-database-code-using-ssdt.aspx - 这可能是处理此问题的最简单方法

http://sqlblog.com/blogs/jamie_thomson/archive/2012/01/01/implementing-sql-server-solutions-using-visual-studio-2010-database-projects-a-compendium-of-project-experiences.aspx - 本文中有很多好的信息,其中大部分内容也适用于SSDT SQL项目。

http://msdn.microsoft.com/en-us/library/dd193415.aspx - 大型数据库的复合项目。这也可能对你有用。

答案 1 :(得分:2)

我的一个模式引用了很多sys.*个对象,这些对象在构建中产生了很多错误。我在解决方案中创建了另一个项目,并将该模式​​移动到新项目中。

幸运的是,您可以在项目级别构建和发布。

这使我至少可以将其他模式保留在变更控制中。

(也可以将SQL文件的属性设置为 Build Action:无