3

Ich habe ein SQL Server-Datenbankeinheit-Testprojekt, das ich nach den Anweisungen hier eingerichtet habe: https://msdn.microsoft.com/en-us/library/jj851212(v=vs.103).aspx.Wie wird das sql-server-Unit-Testprojekt je nach Visual Studio-Version auf localdb gesetzt?

Ich habe alles funktioniert perfekt auf meiner Maschine. Ich habe Visual Studio 2013 Ultimate Edition, was bedeutet, dass meine Localdb-Verbindungszeichenfolge in meiner app.config für mein Unit-Testprojekt auf den Server (localdb) \ ProjectsV12 zeigt.

Das Problem ist, dass einige meiner Mitarbeiter Professional Edition haben, was bedeutet, dass ihre db lebt unter: (localdb) \ Projects. Daher müssen sie die Verbindungszeichenfolge in app.config ändern, wenn sie es aus TFS auschecken und die Komponententests ausführen. Ich möchte, dass es so nahtlos wie möglich ist, damit sie nichts Besonderes tun müssen - einfach das Projekt ausprobieren, die Tests erstellen und ausführen.

Wie kann ich das lösen, damit das Komponententestprojekt auf den korrekten localdb Server abhängig von Ihrer Version von VS zeigt?

+0

Sie können Ihr _app.config_ so einrichten, dass es aus einer [separaten Konfigurationsdatei] liest (http://stackoverflow.com/questions/24335650/splitting-appsettings-section-of-app-config-in- zweiteilig/24335980 # 24335980). Sie verteilen einmal eine andere Konfiguration an jede Umgebung und Ihre quellengesteuerte Version ändert sich nie. – Jasen

+0

_connectionStrings_ Element verwendet das 'configSource' Attribut anstelle des' file' Attributs, aber es funktioniert auf die gleiche Weise. – Jasen

+0

Ich denke nicht, dass das für mein Problem funktioniert. Es sind nicht mehrere Umgebungen, für die ich versuche zu lösen, es sind mehrere Versionen von Visual Studio. Wie würden Sie den externen Konfigurationspfad abhängig von der Version von Visual Studio, in der Sie das Projekt kompilieren, wechseln? – Donuts

Antwort

1

ich eine Lösung aus dem folgenden Blog-Eintrag gefunden: https://blogs.msdn.microsoft.com/ssdt/2014/07/24/sql-server-database-projects-and-team-foundation-build/#unitTests

Indem jeder den folgenden Befehl aus, stellte ich fest, dass alle Namen eine Instanz hatte (localdb) \ v11.0

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

oder alternativ:

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

Vorerst werde ich die app.conf Punkt ig Verbindungszeichenfolge zu v11.0. Wenn ich feststellen, dass diese Instanz aus irgendeinem Grunde nicht für ein bestimmtes Datenbank-Projekt arbeiten, oder jemand hat keine Instanz mit diesem Namen, werde ich einen vorkompilierte Schritt fügen Sie eine Instanz unter ProjectsV12 zu installieren:

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

Laut dem Blog:

Wenn Sie Ihre Datenbank Unit-Test auf die Datenbank LocalDB \ ProjectsV12 bereitstellen möchten, benötigen Sie einen Pre-Test-Skript auf Ihren Build hinzuzufügen, um die Instanz zu erstellen. Die mehrfache Ausführung dieses Befehls ist sicher.

1

Es ist ein Problem mit der Migration von Projekten zwischen verschiedenen Versionen von VS. Sobald Sie ein Projekt mit einer anderen Version als der Version öffnen, in der das Projekt im Migrationsassistenten erstellt wurde, werden die üblichen Fragen zu SQL Express und LocalDb angezeigt. Das Hauptproblem in Bezug auf Ihre Frage scheint jedoch darin zu bestehen, dass Sie Ihre Testcode-Ordnerstruktur organisieren.

  1. Richten Sie Ihre Ordnerstruktur wie in TFS ein. Eine einfache Möglichkeit, dies zu erreichen, besteht darin, zu Visual Studio Online zu gehen und ein neues Team-Testprojekt mit einem Stammordneraufruf "test" zu erstellen. Gewähren Sie allen Benutzern im Team Zugriffsrechte. Verbinden Sie sich mit Ihrem VS-Client, ordnen Sie Ihr lokales Repository zu und checken Sie dann Ihr Projekt ein. Lassen Sie Ihr Team dasselbe tun.
+0

einige Entwickler in meiner Firma haben ein VS-Ultimate 2013, während andere professionelle 2013 haben. So liegt das Problem beim Öffnen mit verschiedenen Versionen von VS. Mein Ziel ist es, die Komponententests lokal auf jedem Dev-Rechner laufen zu lassen. Ich möchte nicht, dass sie sich mit einer gemeinsamen Datenbank verbinden. Die Verbindungszeichenfolge muss daher auf (localdb) \ ProjectsV12 zeigen, wenn Sie das Ultimate ausführen und (localdb) \ Projects, wenn Sie professionell arbeiten. Verteilt jeder Entwickler sein lokales Repository mit dem, was Sie mit Visual Studio online vorschlagen? – Donuts

+0

TFS ist ein serverbasiertes Code-Repository im Gegensatz zu Git, so dass die Frage, ob ein Entwickler sein lokales Repository abbildet, nicht auftritt. Die Zuordnungsoption verbindet einfach Ihr lokales Repository mit dem Server und anschließend wird das Projekt ausgecheckt. Ich habe nicht vorgeschlagen, eine Verbindung zu einer gemeinsamen Datenbank herzustellen. Ich schlug Visual Studio Online vor, weil Sie die Lösung dh testen können. meine Lösung, kostenlos. – user2347763

Verwandte Themen