簡體   English   中英

如何從VisualStudioWorkspace獲取工作區?

[英]How to get workspace from VisualStudioWorkspace?

我正在嘗試從Visual Studio獲得Workspace,以將其與roslyn一起使用。

我發現了一些與此相關的主題,例如: 如何從IVsSolution獲得對“ Roslyn”工作區對象的引用?

我寫了完全一樣的代碼:

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”

我不太明白是什么問題。

聽起來像羅斯林語言服務沒有在Visual Studio的實驗版本中運行。 您必須從此處下載最終用戶預覽: http : //msdn.microsoft.com/zh-cn/vstudio/roslyn.aspx

其中包括一個必須運行的程序,該程序稱為“將Roslyn Preview安裝到Roslyn Experiment Hive中”。

您正在運行的VSPackage必須具有命令行參數“ / rootSuffix Roslyn”。 您可以通過在解決方案資源管理器中右鍵單擊項目,單擊屬性並導航到“調試”來進行設置。

最后,您必須在.csproj XML文件中包括一個額外的屬性:

<VSSDKTargetPlatformRegRootSuffix>Roslyn</VSSDKTargetPlatformRegRootSuffix>

我的上一個問題中有一個解釋: 將VsPackage附加到Roslyn實例

問題解決了。

我的問題來自程序集之間的沖突。

在我的項目中,有Roslyn程序集版本0.7.0,但在測試期間,在運行時是Roslyn程序集版本0.6.0。

因此,在Visual Studio / rootSuffix中,Roslyn在每個項目中都使用<VSSDKTargetPlatformRegRootSuffix>Roslyn</VSSDKTargetPlatformRegRootSuffix>使用Roslyn。 一切都好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM