【问题标题】:Exclude Certain Database Objects from the Build Depending on Configuration Settings根据配置设置从构建中排除某些数据库对象
【发布时间】:2014-09-03 22:35:53
【问题描述】:

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

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

我认为应该有一种方法可以做到这一点,具体取决于解决方案配置设置和发布配置文件。如果我的配置设置为“发布”,那么我希望构建的执行方式有所不同。

构建对我来说非常新。我发现了这个问题:build-different-scripts-depending-on-build-configuration 但我似乎无法找到解决问题的答案。这个问题也无济于事,尽管它非常相似:bind-the-deploy-and-publish-destination

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

谢谢大家!

【问题讨论】:

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


    【解决方案1】:

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

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

    这使我至少可以将其他架构保持在更改控制中。

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

    【讨论】:

      【解决方案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 - 大型数据库的复合项目。这也可能对您有用。

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 2012-07-07
        • 2020-11-21
        • 1970-01-01
        • 2016-01-17
        • 1970-01-01
        • 2016-08-16
        • 2020-07-25
        • 1970-01-01
        相关资源
        最近更新 更多