2017-07-17 3 views
1

Je suis en train de créer un package VSIX pour vs2017 pour rendre un outil personnalisé disponible. Le problème auquel je fais face maintenant est que je suis incapable d'obtenir l'espace de travail actuel pendant le débogage. Le code suivant est utilisé pour obtenir l'espace de travail:VSIX-Project: Impossible d'obtenir l'espace de travail en cours en raison de problèmes de diffusion

var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel)); 
     var workspace = (Workspace)componentModel.GetService<VisualStudioWorkspace>(); 

L'erreur jeté dans la deuxième ligne de code est « Impossible de jeter l'objet de type « Microsoft.VisualStudio.LanguageServices.RoslynVisualStudioWorkspace » taper « Microsoft.VisualStudio .LanguageServices.VisualStudioWorkspace '. ".

J'ai déjà ajouté le paquet languageservices au projet comme suggéré sur d'autres threads.

Répondre

2

Cela se produirait si deux versions différentes des DLL Roslyn étaient chargées (vous pouvez vérifier cela dans Debug, Modules).

Assurez-vous que les références à Roslyn dans votre projet VSIX ne sont pas définies sur Copier local ou sur Inclure dans VSIX.

+0

maintenant je me rapproche du problème. dans les modules j'ai vu que Microsoft.CodeAnalysis.Workspaces a été chargé 2 fois donc j'ai exclu la référence dans le vsix de la sortie. –

+0

"Impossible de charger le fichier ou l'assemblage 'Microsoft.CodeAnalysis.Workspaces, Version 2.3.0.0' ...." puis-je obtenir ce travail avec les redirections d'assemblage? Je vois que l'assemblage est déjà chargé, juste dans une version différente –

+0

@ D.J .: On dirait que vous faites référence à une version de Roslyn plus récente que votre version VS. Soit mettre à niveau VS ou rétrograder Roslyn. – SLaks