初めて、テスト プロジェクトで 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 をソリューションに追加し、Deployment カテゴリの下に 1 つのエントリを追加しました。
<solutionDirectory>\TestProject1\Azure-Dev-VS13.sqlunittest.config
ただし、何をしても、変更されたパスへの参照なしで同じエラーメッセージが表示されるため、元の app.config をまだ読み取っていると思います。
上記の例は、開発マシン、TFS サーバー、およびビルド サーバーが 1 台のマシンであるテスト用の 1 台のマシンのセットアップからのものです。ただし、完全な開発環境でも同じエラーが発生します。
何か案は。ありがとう。