3

私はここに手順に従って設定したSQL Serverデータベースユニットテストプロジェクトを持っています:https://msdn.microsoft.com/en-us/library/jj851212(v=vs.103).aspxビジュアルスタジオのバージョンに応じて、SQL Server単体テストプロジェクトをlocaldbに向けるには?

私はすべて自分のマシンで動作しています。私はVisual Studio 2013アルティメット版を持っています。これは、自分のapp.configの私のユニットテストプロジェクト用のlocaldb接続文字列がサーバ(localdb)\ ProjectsV12を指していることを意味します。

問題は、私の同僚の一部にプロフェッショナル版があることです。つまり、データベースが(localdb)\ Projectsにあることを意味します。したがって、TFSからチェックアウトして単体テストを実行すると、app.configの接続文字列を変更する必要があります。できるだけシームレスにして、特別なことをする必要はありません。プロジェクトをチェックし、テストをビルドして実行してください。

あなたのVSのバージョンに応じてユニットテストプロジェクトが正しいlocaldbサーバを指し示すように、これをどのように解決できますか?

+0

あなたは_app.config_を[別の設定ファイル]から読み込むように設定することができます(http://stackoverflow.com/questions/24335650/splitting-appsettings-of-app-config-in- 2部/ 24335980#24335980)。各環境に異なる設定を一度配布すると、ソース管理バージョンは決して変更されません。 – Jasen

+0

_connectionStrings_要素は 'file'属性ではなく' configSource'属性を使用しますが、それは同じように動作します。 – Jasen

+0

私の問題ではうまくいかないと思います。それは私が解決しようとしている複数の環境ではない、それはVisual Studioの複数のバージョンです。プロジェクトをコンパイルしているVisual Studioのバージョンに基づいて、外部設定パスを条件付きで切り替える方法はありますか? – Donuts

答えて

1

私は次のブログ記事からの解決策が見つかりました:誰もが、次のコマンドを実行したことで https://blogs.msdn.microsoft.com/ssdt/2014/07/24/sql-server-database-projects-and-team-foundation-build/#unitTests

を、私は誰もがv11.0

%ProgramFiles%\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe i 
\(localdb)という名前のインスタンスを持っていたと判断し

または代わり:

"%ProgramFiles%\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" i 

今のところ、私はapp.confを指していますig接続文字列をv11.0に設定します。私はいくつかの理由で、このインスタンスは、特定のデータベースプロジェクトのために動作しませんか誰かがその名前のインスタンスを持っていないことが判明した場合、私はProjectsV12の下でインスタンスをインストールするには、事前に作成するステップを追加します。

"%ProgramFiles%\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe" create ProjectsV12 -s 

ブログによると:

を使用すると、データベースのユニットテストは LocalDB \ ProjectsV12にデータベースを展開する場合は、インスタンスを作成するためにあなたの ビルドに事前テストスクリプトを追加する必要があります。このコマンドを複数回実行すると、安全な になります。

1

異なるバージョンのVS間でプロジェクトを移行する際に問題があります。移行ウィザードでプロジェクトを作成したバージョン以外のバージョンでプロジェクトを開くとすぐに、SQL ExpressとLocalDbに関する通常の質問が表示されます。しかし、あなたの質問に関連する主な問題は、あなたのテストコードフォルダ構造を整理することのようです。

  1. TFSと同じようにフォルダ構造を設定します。これを実現させる簡単な方法の1つは、Visual Studio Onlineにアクセスして、ルートフォルダーコール 'test'を使用して新しいチームテストプロジェクトを作成することです。チーム内のすべての人にアクセス権を与える。 VSクライアントを使用して接続し、ローカルリポジトリをマップし、プロジェクトをチェックインします。あなたのチームに同じことをさせてください。
+0

私の会社の一部の開発者はVS究極の2013を持っていますが、他の人はプロの2013を持っています。そうですね、問題はVSの異なるバージョンで開くことにあります。私の目標は、各devのマシン上でローカルに実行できるようにユニットテストを行うことです。私は彼らが共通のデータベースに接続することを望んでいません。接続文字列は、(localdb)\ ProjectsV12を指していなければなりません。各開発者はあなたのローカルリポジトリを、あなたがビジュアルスタジオのオンラインで提案しているものとマッピングしていますか? – Donuts

+0

TFSは、Gitとは異なり、サーバーベースのコードリポジトリなので、ローカルのリポジトリをマッピングする各開発者の質問は発生しません。マッピングオプションは、ローカルリポジトリとサーバの接続を行い、プロジェクトをチェックアウトするだけです。私は共通のデータベースへの接続を提案しませんでした。 ソリューションをテストできるので、Visual Studio Onlineを提案しました。私の解決策は、無料です。 – user2347763

関連する問題