2017-07-14 1 views
2

Ma solution créée avec VS2017 Professional contient un projet de base de données SQL Server qui fait référence à la base de données master. Lorsque vous utilisez l'agent VS2017 hébergé pour construire ma solution dans Visual Studio Team services que je reçois les erreurs ci-dessous:La génération de l'agent hébergé VS2017 master.dacpac n'existe pas

2017-07-14T12: 44: ## 17.8387743Z [error] C: \ Program Files (x86) \ Microsoft de Visual studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTasks.targets (559,5): erreur SQL72027: fichier « C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ Extensions \ SqlServer \ 110 \ SqlSchemas \ master.dacpac " n'existe pas. 2017-07-14T12: 44: 17.8397816ZC: \ Fichiers programme (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTasks. target (559,5): Erreur de génération SQL72027: Fichier "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ Extensions \ SqlServer \ 110 \ SqlSchemas \ master.dacpac " n'existe pas. [d: \ a \ 3 \ s \ Main \ ItAsset.Database \ ItAsset.Database.sqlproj]

Comment puis-je résoudre ce problème et obtenir ma solution pour construire dans VSTS?

+0

Résolvez-vous ce problème avec ma solution? –

Répondre

2

Il utilise le chemin absolu qui n'existe pas dans l'agent hébergé VS2017. (Professional vs Enterprise). Vous pouvez vérifier le fichier projet (ouvrir le fichier sqlproj via nodepad)

Vous pouvez copier master.dacpac dans votre dossier de projet et l'inclure dans le projet, puis ajouter la référence à ce fichier.

+0

utilisez plutôt la réponse de LarrySmith. Vous n'avez pas à inclure dacpacs dans votre projet. – Justin

2

Ce bogue dans SSDT pour Visual Studio 2017.

La solution consiste à modifier manuellement le fichier de projet (s) remplaçant le chemin complet avec la variable $ (DacPacRootPath). Ou bien, vous pouvez utiliser SSDT pour Visual Studio 2015.

Le bug a été signalé à deux reprises sur le site Microsoft Connect: https://connect.microsoft.com/SQLServer/Feedback/Details/3141348

Et, ici: https://connect.microsoft.com/SQLServer/Feedback/Details/3133716

Notez que le site Connect a été mis hors service. S'il vous plaît voter pour cette question UserVoice ici:

https://feedback.azure.com/forums/908035-sql-server/suggestions/32897047-visual-studio-2017-ssdt-adds-hardcoded-master-dacp#comments

+1

Plutôt que de copier autour de fichiers, je suis d'accord que c'est cassé et qu'il a besoin d'être réparé. –

+0

Merci pour les détails supplémentaires @ LarrySmith –

+0

À tout moment mon ami. Celui-ci était un vrai mystère et totalement frustrant dans mon équipe presque aussitôt que nous sommes passés à 2017. Des accusations ont été proférées et les victimes ont été chassées. ;) Votre message nous a mis sur le droit chemin, littéralement. –

6

Je viens de recevoir peu à cela dans une situation multi-développeur. Il semble que cela se produise dans des projets SSDT VS2017 où le développeur qui a vérifié le code a initialement eu son installation de Visual Studio dans un chemin différent de celui de vous ou d'une autre instance de Visual Studio. Par exemple, si le développeur A est installé par défaut sur C: \ mais que le développeur B a installé son lecteur VS2017 sur E: \, celui qui crée la référence à Master fonctionnera, l'autre ne trouvera pas le fichier dacpac.

En regardant dans le.fichier sqlproj, vous trouverez probablement cette référence à la base de données principale:

<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac"> 
    <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac</HintPath> 

Note: le <HintPath> est correct, mais le Include=" est un chemin codé en dur. Il semble que le chemin de l'indice ne soit pas suivi comme il devrait normalement l'être. Pour résoudre votre problème, essayez de copier le contenu de l'élément HintPath dans l'attribut Include. Laissez le HintPath tel qu'il est.

<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac"> 
+0

Merci beaucoup! Cela a résolu mon problème! – Nightking