Я пытаюсь получить Workspace из visual studio, чтобы использовать его с roslyn.
Я нашел некоторые темы об этом, как этот: Как получить ссылку на объект Workspace из Roslyn из IVsSolution?
Я написал точно такой же код:
var componentModel = (IComponentModel)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SComponentModel));
var workspace = componentModel.GetService<Microsoft.VisualStudio.LanguageServices.VisualStudioWorkspace>();
Но я получаю эту ошибку...
"Экспорт не найден, что соответствует ограничению: ContractName Microsoft.CodeAnalysis.Workspace RequiredTypeIdentity Microsoft.CodeAnalysis.Workspace"
Я не совсем понимаю, в чем проблема.
Похоже, что языковые службы Roslyn не работают в экспериментальной версии Visual Studio. Вы должны скачать предварительный просмотр отсюда: http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx
Это включает в себя программу под названием "Установить Roslyn Preview в Roslyn Experimental Hive", которую вы должны запустить.
В VSPackage, который вы используете, должны быть аргументы командной строки "/rootSuffix Roslyn". Вы можете установить это, щелкнув правой кнопкой мыши проект в обозревателе решений, щелкнув свойства и перейдя на "Отладка".
Наконец, вы должны включить дополнительное свойство в XML файл.csproj:
<VSSDKTargetPlatformRegRootSuffix>Roslyn</VSSDKTargetPlatformRegRootSuffix>
В моем предыдущем вопросе есть объяснение: присоедините VsPackage к Roslyn Instance
Задача решена.
Моя проблема возникла из-за конфликта между сборкой.
В моем проекте была сборка Roslyn версии 0.7.0, но во время теста, в Runtime, это была версия Roslyn 0.6.0.
Итак, в Visual Studio/rootSuffix Roslyn с <VSSDKTargetPlatformRegRootSuffix>Roslyn</VSSDKTargetPlatformRegRootSuffix>
в каждом проекте с использованием Roslyn. Все в порядке.