【发布时间】:2015-10-12 00:43:00
【问题描述】:
我第一次尝试将 Visual Studio 2013 SQL Server 数据库项目与测试项目一起使用。它似乎在我的本地机器上运行良好,但由于路径不正确,使用 TFS2013.4 在构建服务器上运行时出错:
数据库部署失败。小路 'C:\Builds\1\Database1\Database1.sqlproj' 不是指向 数据库项目文件。
在运行测试之前找不到要部署的数据库项目。
这是一个已知功能,这里有一个关于该主题的 MSDN 页面https://msdn.microsoft.com/en-us/library/jj851202(v=vs.103).aspx(请参阅“修改测试项目”标题下的部分)。但是,我发现解释不清楚。似乎也有一些错字,例如指令 6 似乎让您将 app.config 从 x 更改为 y,我看不出有什么区别。他们似乎在 BuildComputer.sqlunitttest.config 中也有一个额外的“t”,还是故意的?不确定。
基于这个 MSDN 页面,我现在有一个 app.config 如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="SqlUnitTesting" type="Microsoft.Data.Tools.Schema.Sql.UnitTesting.Configuration.SqlUnitTestingSection, Microsoft.Data.Tools.Schema.Sql.UnitTesting, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</configSections>
<SqlUnitTesting AllowConfigurationOverride="true">
<DatabaseDeployment DatabaseProjectFileName="..\..\..\Database1\Database1.sqlproj"
Configuration="Debug" />
<DataGeneration ClearDatabase="true" />
<ExecutionContext Provider="System.Data.SqlClient" ConnectionString="Data Source=(localdb)\ProjectsV12;Initial Catalog=SimpleUnitTestDB;Integrated Security=True;Pooling=False"
CommandTimeout="30" />
<PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="Data Source=(localdb)\ProjectsV12;Initial Catalog=SimpleUnitTestDB;Integrated Security=True;Pooling=False"
CommandTimeout="30" />
</SqlUnitTesting>
</configuration>
注意AllowConfigurationOverride="true" 添加到SqlUnitTesting 部分的属性。
还有另一个名为 Azure-Dev-VS13.sqlunittest.config 的配置文件,其中 Azure-Dev-VS13 是构建服务器名称。内容如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="SqlUnitTesting" type="Microsoft.Data.Tools.Schema.Sql.UnitTesting.Configuration.SqlUnitTestingSection, Microsoft.Data.Tools.Schema.Sql.UnitTesting, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</configSections>
<SqlUnitTesting>
<DatabaseDeployment DatabaseProjectFileName="..\..\..\TestTeamProject\Database1\Database1.sqlproj"
Configuration="Debug" />
<DataGeneration ClearDatabase="true" />
<ExecutionContext Provider="System.Data.SqlClient" ConnectionString="Data Source=(localdb)\ProjectsV12;Initial Catalog=SimpleUnitTestDB;Integrated Security=True;Pooling=False"
CommandTimeout="30" />
<PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="Data Source=(localdb)\ProjectsV12;Initial Catalog=SimpleUnitTestDB;Integrated Security=True;Pooling=False"
CommandTimeout="30" />
</SqlUnitTesting>
</configuration>
唯一的区别是DatabaseProjectFileName属性中路径的变化。
我还在解决方案中添加了一个 Local.testsettings,在
的部署类别下有一个条目<solutionDirectory>\TestProject1\Azure-Dev-VS13.sqlunittest.config
但是,无论我做什么,我都会收到相同的错误消息,但没有对更改后的路径的引用,所以我认为它仍在读取原始 app.config。
以上示例来自测试单机设置,其中开发机器、TFS 服务器和构建服务器是一台机器。但是,我在我们的完整开发环境中遇到了同样的错误。
任何想法。谢谢。
【问题讨论】:
标签: visual-studio-2012 msbuild tfsbuild vstest