web-dev-qa-db-fra.com

Visual Studio 2015 Update 2 révolutionne l'ingénierie de code inverse EF vsix

Après avoir installé la dernière version de Visual Studio 2015 Update 2, l'option de l'ingénierie de code inverse des outils électriques EF échoue avec le message d'erreur suivant.

One or more errors occurred while processing template 'Entity.tt'.
error : An exception was thrown while trying to compile the transformation code. The following Exception was thrown:
System.ArgumentException: Empty path name is not legal.
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at System.IO.File.OpenRead(String path)
   at Roslyn.Utilities.FileUtilities.OpenFileStream(String path)
   at Microsoft.CodeAnalysis.MetadataReference.CreateFromFile(String path, MetadataReferenceProperties properties, DocumentationProvider documentation)
   at Microsoft.VisualStudio.TextTemplating.CompilerBridge.<>c.<.ctor>b__15_0(String x)
   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
   at System.Linq.Enumerable.<UnionIterator>d__66`1.MoveNext()
   at System.Linq.Enumerable.<UnionIterator>d__66`1.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at System.Collections.Immutable.ImmutableArray.CreateRange[T](IEnumerable`1 items)
   at Microsoft.CodeAnalysis.ImmutableArrayExtensions.AsImmutableOrEmpty[T](IEnumerable`1 items)
   at Microsoft.CodeAnalysis.Compilation.ValidateReferences[T](IEnumerable`1 references)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.WithReferences(IEnumerable`1 references)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CommonWithReferences(IEnumerable`1 newReferences)
   at Microsoft.VisualStudio.TextTemplating.CompilerBridge.PrepareNewCompilation()
   at Microsoft.VisualStudio.TextTemplating.CompilerBridge.Compile()
   at Microsoft.VisualStudio.TextTemplating.TransformationRunner.Compile(String source, String inputFile, IEnumerable`1 references, Boolean debug, SupportedLanguage language, String compilerOptions)

J'ai essayé de désinstaller et de réinstaller l'outil depuis le lien Julie Lermans pour obtenir la version du programme d'installation VSix vs 2015 corrigée.

Aidez-moi!

16
richardb

Définir le projet comme projet de démarrage m'a aidé à contourner cette erreur.

4
Nirbhay Jha

Je ne suis pas vraiment sûr que mon cas correspond à 100% de votre cas, mais l'erreur est la même et la condition préalable aussi.

Mon "péché" original était le fichier configuré pour CodeAnalysis manquant, donc la première étape est " Vérifiez les propriétés du projet, dans l'onglet Analyse du code si vous utilisez un fichier existant ".

Maintenant, la première exception a disparu mais une nouvelle est apparue, une exception OutOfMemoryException vraiment inattendue!

En prenant le processus devenv.exe sous contrôle, j'ai remarqué qu'il commençait à consommer très rapidement RAM (de 250 Mo à 2 Go en moins d'une seconde!), Sans raison scientifique :-), j'ai essayé de créer un nouveau jeu de règles vide et l’associer au projet et il a incroyablement commencé à fonctionner à nouveau!

J'espère que cela pourra vous aider.

3
MonDeveloper

On dirait que les EF6 Power Tools ont besoin de l'amour de quelqu'un ..__ Il est bien documenté qu'il faut changer le paquet zip .vsix avant de l'installer dans VS2015.

On a vraiment l'impression que cela pose d'importants problèmes de stabilité. Après de nombreuses variations sur un thème, procédez comme suit, place l'outil dans des problèmes pouvant être répétés ...

  1. commencer nouveau proj. et définir le cadre cible à 4.5.1
  2. ajouter un app.config
  3. Paquet d'installation entityframework -ProjectName MYPROJ
  4. [CLIC DROIT] [Cadre d'entité] [Code d'ingénieur inverse en premier (RECF)]
  5. Choisissez une connexion et une base de données Ceci fonctionne de manière répétable sans aucun problème, et le kickout (RECF) fonctionne à nouveau de manière répétée à ce stade.

  6. [CLIC DROIT] [Entity Framework] [Personnaliser les modèles d'ingénierie inverse] Et ajouter les fichiers .t . Répéter l'étape 4 Le RECF fonctionne de manière répétée.

  7. Maintenant, changez le context.tt en très simple, par exemple. ajouter simplement un commentaire // 

to top of context.tt entraîne l'échec constant de la procédure RECF à l'étape 4 . Le redémarrage de VS2015 et le redémarrage du boîtier ne permettent toujours pas à l'étape 4-RECF de fonctionner à nouveau.

Supprimer le projet et recommencer semble permettre au processus RECF de fonctionner, MAIS dès que j'importe les tt et que je modifie ensuite un .tt, il y a une spirale de problèmes différents dans la sortie ...

non plus 

Mémoire insuffisante pour continuer l'exécution du programme #

OU 

Une exception a été levée lors de la compilation du code de transformation

OR

Une ou plusieurs erreurs se sont produites lors du traitement du modèle 'Entity.tt' .____. Erreur: une exception a été générée lors de la tentative de compilation du code de transformation. L'exception suivante a été levée: System.ArgumentException: le nom de chemin vide n'est pas légal.

À cette ressource,
https://visualstudiogallery.msdn.Microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d , il y a des gens qui commentent divers problèmes similaires, mais dans l'ensemble, cet outil est instable, peu fiable et difficile à utiliser de manière stable et reproductible. 

1
judek

Modifiez votre .Net Framework vers 4.5, à faire. Cliquez avec le bouton droit de la souris sur Projet> Propriétés> Framework cible. Maintenant, essayez 'Reverse Engineer CodeFirst'.

1
manoj raj

Le problème est que l'outil ne télécharge pas automatiquement Entity Framework, qui rompt les règles du jeu de règles d'analyse de code par défaut. La solution de contournement consiste donc d'abord à installer le package installez manuellement Entity Framework}, puis à exécuter le Générateur de code de Reverse Engineer.

0
Tanya Petkova

Dans mon cas, j'ai mis à jour le framework d'entité de 4.5 à 4.6, 4.5.1 ne fonctionnait pas . Suivez les étapes suivantes pour résoudre ce problème.

Cliquez avec le bouton droit sur le projet dans Explorateur de solutions> Propriétés> Cadre cible, passez de 4.5 à 4.6, puis régénérez la solution.

0
Muhammad Bilal

Pour moi, c'était aussi simple qu'un autre redémarrage de Visual Studio. 

0
Dave