La tâche EntityHydrate a échoué

J’ai récemment installé la version bêta de Visual Studio 11 aux côtés de Visual Studio 2010. Après cela, je ne pouvais pas créer mes projets dans Visual Studio 2010 qui reposent sur PostSharp. J’ai donc désinstallé Visual Studio 11 et la version bêta de .Net Framework 4.5.

Lorsque j’essaie maintenant de générer mes projets dans Visual Studio 2010, le message d’erreur suivant s’affiche:

Error 20: The "EntityHydrate" task failed unexpectedly. System.TypeInitializationException: The type initializer for 'Microsoft.Data.Entity.Design.Model.SchemaManager' threw an exception. ---> System.MissingFieldException: Field not found: 'System.Data.Entity.Design.EntityFrameworkVersions.Version3'. at Microsoft.Data.Entity.Design.Model.SchemaManager..cctor() --- End of inner exception stack trace --- at Microsoft.Data.Entity.Design.Model.SchemaManager.GetSchemaVersion(XNamespace xNamespace) at Microsoft.Data.Tools.Integration.Build.EntityHydrate.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult) BuildingModule 

J’ai déjà réinstallé Entity Framework 4.1 et .Net Framework 4 sans succès. Je ne pouvais pas non plus trouver d’informations sur l’objective de la tâche “EntityHydrate” ni sur la raison pour laquelle elle tente d’accéder à l’espace de noms “Version3” du cadre de l’entité.

Une idée comment résoudre ce problème? Je ne pouvais pas trouver un lien de téléchargement vers Entity Framework 3, cela pourrait peut-être résoudre le problème?

Je vous remercie.

Merci d’avoir soulevé ceci. Nous (l’équipe EF) avons mené des recherches et nous avons conclu que le problème pouvait être déclenché sur une machine contenant SQL Server 11 et Visual Studio 11 Beta.

Dans la version bêta, la configuration des outils EF (également appelée “Outils SQL Server Data Framework”) contient ce fichier de cibles MSBUILD:

C: \ Program Files (x86) \ MSbuild \ 4.0 \ Microsoft.Common.Targets \ ImportAfter \ Microsoft.Data.Tools.Integration.targets

Remarque: Utilisez «Program Files» sans «(x86)» si vous disposez de la version 32 bits de Windows.

Ce fichier est un résidu obsolète de l’intégration entre Entity Framework Designer et les outils de données SQL Server, qui était contenu dans Visual Studio 11 Developer Preview mais supprimé de la version bêta (voir ici pour plus de détails). Le fichier a été supprimé dans les versions internes les plus récentes, il ne sera donc pas présent dans RTM.

Vous pourrez peut-être contourner ce problème en supprimant ou en renommant le fichier de cibles, par exemple en y ajoutant l’extension .backup.

EDIT: Grattez ça … Quelqu’un en dessous dit que renommer n’est pas suffisant. Vous devez supprimer le fichier.

L’autre solution de contournement suggérée dans ce fil fonctionnera également, mais elle présente le gros inconvénient de supprimer l’ensemble du concepteur Entity Framework de votre configuration de Visual Studio.

J’ai finalement compris. Le problème est dû à Entity Framework 5 installé avec .Net Framework 4.5 Beta. EF 5 est référencé par la constante Version3 mentionnée dans le message d’erreur. Le nom interne de EF 4 est Version2.

La classe “Microsoft.Data.Entity.Design.Model.SchemaManager” fait partie d’un composant appelé Outils SQL Server Data Framework installé avec Visual Studio 11. Même après avoir désinstallé tous les éléments liés à Visual Studio 11 et .Net Framework 4.5 ce composant était toujours là et utilisé par VS 2010 pour les projets utilisant Entity Framework.

Après avoir supprimé ce composant, tout fonctionne à nouveau. Il peut y avoir plus d’une entrée pour cela dans la liste des programmes installés, il suffit de chercher “données” pour les trouver.

vous devez supprimer ce répertoire C: \ Program Files (x86) \ MSbuild \ 4.0

Je ne fais que poster car rien ne semblait fonctionner ici. Sur la base des propos de @divega, j’ai décidé de supprimer toutes les entrées SQL Server 2012 de la rubrique “Programmes et fonctionnalités”, après quoi je pouvais créer mes modèles d’entité dans VS2010.