web-dev-qa-db-fra.com

Échec du chargement du projet en raison du fichier SqlServer.targets manquant après la mise à niveau vers Visual Studio 2013

Après avoir mis à niveau vers Visual Studio 2013, j'ai constaté qu'un ancien projet SQL ne se charge pas lorsque je tente d'ouvrir une solution. L'erreur affichée est:

Le projet importé "C:\Program Files (x86)\MSBuild\12.0\bin\SqlServer.targets" est introuvable. Confirmez que le chemin dans la déclaration est correct et que le fichier existe sur le disque. C:\Some\Path\To\Project\Database.sqlproj

Dans mon fichier .sqlproj, j'ai la ligne 

<Import Project="$(MSBuildToolsPath)\SqlServer.targets" />

qui dans Visual Studio 2012 est résolu en C:\Windows\Microsoft.NET\Framework\v4.0.30319\SqlServer.targets mais dans Visual Studio 2013, il est résolu en C:\Program Files (x86)\MSBuild\12.0\bin\SqlServer.targets. Toutefois, le fichier SqlServer.targets ne se trouve dans aucun de ces emplacements.

Cela est probablement dû au fait que MSBuild est devenu une partie de Visual Studio, plutôt qu’il fait partie du .Net Framework.

Quelqu'un sait-il comment résoudre ce problème et migrer ce projet vers Visual Studio 2013?

27
Chris

J'ai eu le même problème lorsque j'ai essayé de créer une solution VS 2010 sous VS 2013. Le correctif consistait à mettre à niveau le fichier de solution vers VS 2013. Après cela, cela a fonctionné sans autre modification.

0
Blade

Il suffit de copier SqlServer.targets de C:\Windows\Microsoft.NET\Framework\v3.5 à C:\Program Files (x86)\MSBuild\12.0\Bin et cela aide. VS2013 est maintenant capable d'ouvrir l'ancien projet.

25
Vladimir Dronov

J'ai eu un problème similaire lors de la mise à niveau de Visual Studio 2008 à 2013. .. Il a fallu un certain temps, mais j'ai dû installer le SSDT pour VS 2013 (à nouveau), puis j'ai créé un nouveau projet de base de données pour connaître le chemin d'accès relatif au nouveau fichier sqlserver.targets . Il devrait être comme suit:

  <Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
  <Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />

Le plus gros obstacle que j'ai trouvé à corriger cette erreur était d'essayer de comprendre le message d'erreur fourni (BC2014: la valeur 'base de données' n'est pas valide pour l'option 'cible')

J'espère que cela t'aides!

4
Rolan

J'ai eu le même problème et j'ai résolu de cette façon: Créez simplement un fichier nommé ' SQLServer.targets ' on ' C:\Windows\Microsoft.NET\Framework\v4.0.30319 ' avec le contenu suivant:

<Project xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">

    <PropertyGroup>
           <SqlClrTargetsFullPath>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlClr.targets</SqlClrTargetsFullPath>
    </PropertyGroup>

    <Import Project="$(SqlClrTargetsFullPath)" Condition="Exists('$(SqlClrTargetsFullPath)')"/>
</Project>

Bonne chance.

2
Stephen Knupfer

Cela peut également se produire lors de l’ouverture d’un projet plus ancien dans Windows 10.

J'ai eu le même problème (SqlServer.targets introuvable) lors de l'ouverture d'un ancien assemblage SQL Server CLR dans Visual Studio 2010 sous Windows 10, la même version utilisée à l'origine pour écrire Assembly .

Confirmé que le même projet s'est parfaitement bien ouvert dans Visual Studio 2010 sur un ordinateur Windows 7.

Solution

Faites attention au message d'erreur. Dans mon cas c'était:

Le projet importé "C:\Windows\Microsoft.NET\Framework\v4.0.30319\SqlServer.targets" n'a pas été trouvé. Confirmez que le chemin dans la déclaration est correct et que le fichier existe sur le disque.

Copiez simplement SqlServer.targets à partir de l'emplacement indiqué dans la réponse de Vladimir Dronov, "C:\Windows\Microsoft.NET\Framework\v3.5\SqlServer.targets", dans le répertoire indiqué dans le message d'erreur.

Dans mon cas, c’était "C:\Windows\Microsoft.NET\Framework\v4.0.30319 \".

0
Jan1torEarl

Solution 1:

Si le projet est un fichier .csproj, vous devez vérifier si Visual Studio a également généré un fichier .sqlproj lors de la mise à niveau. Si tel est le cas, vous pouvez ajouter cela à la solution.

Solution 2:

Vous pouvez essayer de modifier la ligne suivante dans le fichier .sqlproj:

<Import Project="$(MSBuildToolsPath)\SqlServer.targets" />

à

<Import Project="$(MSBuildBinPath)\SqlServer.targets" />
0
Radu Damian

L'erreur résultant de plusieurs de ces solutions

J'ai posté une question spécifique ( Erreur C # VS 2013 2013 02019: Type de cible non valide pour/cible: doit spécifier 'exe', 'winexe', 'bibliothèque', 'module', 'appcontainerexe' ou 'winmdobj' CSC ) en ce qui concerne l'erreur de construction fatale décrite par Chris Torng en dessous de la réponse de Vladimir Dronov:

Erreur 1 02019: Type de cible non valide pour/target: vous devez spécifier 'exe', 'winexe', 'bibliothèque', 'module', 'appcontainerexe' ou 'winmdobj' CSC


Le correctif

J'ai pu supprimer l'erreur liée aux problèmes de compatibilité des outils de développement SQL Server dans VS2013 Community Edition en suivant les conseils de ce forum:

https://connect.Microsoft.com/SQLServer/feedbackdetail/view/979839

Publié par bsclifton le 15/11/2014 à 07h18

Avait aussi ce problème avec l'édition 2013 de la Communauté; Aller dans Outils-> Extensions et mises à jour et mettre à jour "Mise à jour de Microsoft SQL Server pour les outils de base de données" a résolu le problème :)

Si cela ne fonctionne pas pour vous, je vous recommande de consulter ce forum car il offre plusieurs autres idées pour résoudre le problème

0
Justin L.