【发布时间】:2019-04-05 12:32:33
【问题描述】:
我在一个包含多个 SQL Server 数据库项目的解决方案中使用 tSQLt。对于每个项目,都有一个引用原始项目和 tSQLt 源的 .Test 项目。
以下是解决方案的简要概述:
解决方案
- 项目
DB1 - 项目
DB1.Test - 项目
DB2 - 项目
DB2.Test - 项目
TSQLT
在哪里
- 项目
DB2依赖于项目DB1 - 项目
DB1.Test依赖于DB1和TSQLT(使用“相同数据库”选项) - 项目
DB2.Test依赖于DB2和TSQLT(使用“相同数据库”选项)和DB1.Test(相同的服务器,不同的数据库和一个变量)。因为DB1.Test依赖于DB1和TSQLT,所以这个项目也依赖于它们(使用与DB1.Test相同的变量)。
问题是当从DB2.Test 引用时,对DB1.Test 的引用并没有带来TSQLT 和DB1 对象,所以我得到了大量关于未解析引用的警告列表。
与DB1 相关的警告可以通过使用与DB1.Test 相同的变量引用该项目来解决,但TSQLT 已在此处引用,当我尝试引用它两次时,它会导致“重复引用”错误。
一个明显的解决方案是在解决方案中制作 TSQLT 项目的副本,但老实说,我只是不想重复代码。
另一种方法是使用不同的配置构建该项目,并简单地引用 .dacpac 文件,但这感觉像是一种 hack。
理论上,我们可以将 TSQLT 项目移出解决方案,并拥有 dacpac 文件的多个副本并引用这些副本,但是我试图将所有内容保存在一个地方。
目前我们没有 NuGet 存储库,因此使用 NuGet 包分发代码以使该部分保持最新也不起作用。
我尝试了两次引用它,但是使用不同的变量名,仍然会导致重复引用错误。
我知道,嵌套引用场景中未解决的引用错误可以通过将所有级别添加到项目中作为参考来解决,但在这种情况下,其中一个项目被使用两次并且不允许重复。
当存在嵌套引用时,是否有任何解决方案可以继续引用?
或者在构建期间将生成的 dacpac 文件从一个项目复制到另一个项目时使用自定义(唯一)名称保存本地副本?
请注意,没有循环引用,只是一个项目在解决方案的多个级别中使用,并且没有为所有实例设置 TSQLT 引用,构建工作正常,只是警告很烦人。
我知道“抑制警告”选项,但我希望将其关闭。 (这不会使对象神奇地出现在 IntelliSense 中)。
在这种情况下,打开或关闭“本地复制”选项不会对行为产生任何影响。
【问题讨论】:
标签: visual-studio-2017 sql-server-data-tools