2017-07-17 52 views
1

我正在嘗試爲vs2017構建VSIX包以使自定義工具可用。 我現在面臨的問題是,我無法在調試時獲取當前工作區。 下面的代碼用於獲取工作區:VSIX項目:由於投射問題而無法獲取當前工作區

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

在代碼的第二線引發的錯誤是「無法轉換類型的對象‘Microsoft.VisualStudio.LanguageServices.RoslynVisualStudioWorkspace’爲類型「Microsoft.VisualStudio .LanguageServices.VisualStudioWorkspace」。「

我已經將languageservices-package添加到項目中,如其他主題上的建議。

回答

2

如果您加載了兩個不同版本的Roslyn DLL,可能會發生這種情況(您可以在Debug,Modules中檢查該版本)。

確保VSIX項目中對Roslyn的引用未設置爲「複製本地」或包含在VSIX中。

+0

現在我正在接近這個問題。在我見過的模塊中,Microsoft.CodeAnalysis.Workspaces被加載了2次,所以我從輸出中排除了vsix中的引用。 –

+0

「無法加載文件或程序集'Microsoft.CodeAnalysis.Workspaces,版本2.3.0.0'....」我可以使用程序集重定向工作嗎?我看到程序集已經加載,只是在一個不同的版本 –

+0

@ D.J .:聽起來你引用的是比VS版本更新的Roslyn版本。升級VS或降級Roslyn。 – SLaks

相關問題