2016-07-05 6 views
11

मैंने क्लास लाइब्रेरी प्रोजेक्ट बनाया है और कुछ प्रसंस्करण किया है और कोड उत्पन्न करने के लिए रोज़लिन का भी उपयोग किया है।Roslyn फेंकता है भाषा 'सी #' समर्थित नहीं है

मैं एक संदर्भ के रूप में एक WPF GUI अनुप्रयोग में लाइब्रेरी का उपयोग करता हूं।

enter image description here

बिल्ड कोई त्रुटि से पता चलता है, लेकिन जब मैं निम्नलिखित कोड का उपयोग करें::

:

private static void GetGenerator() 
{ 
    workspace = new AdhocWorkspace(); 
    generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp); 
} 

मैं एक अपवाद मिल

ये NuGet पैकेज हैं "भाषा 'सी #' समर्थित नहीं है।"

at: Microsoft.CodeAnalysis.Host.HostWorkspaceServices.GetLanguageServices(String languageName) 
    at: Microsoft.CodeAnalysis.Host.Mef.MefWorkspaceServices.GetLanguageServices(String languageName) 
    at: Microsoft.CodeAnalysis.Editing.SyntaxGenerator.GetGenerator(Workspace workspace, String language) 

this और this के अनुसार, मैं CodeAnalysis स्थानीय रूप से फ़ाइलों की प्रतिलिपि और आवश्यक संदर्भ जोड़ने के लिए। वे वहां हैं, फिर भी त्रुटि होती है।

क्या यह अभी भी एक बग है जो पिछले वर्ष में तय नहीं किया गया था?

मुझे और क्या करना चाहिए?

+0

क्या आपके पास Microsoft.CodeAnalysis.CSharp.Workspaces पैकेज पर निर्भरता है? – svick

+0

@svick हाँ, मैं करता हूं, मैंने NuGet पैकेज सूची के साथ अपनी प्रारंभिक पोस्ट अपडेट की है। – Nestor

+0

आईएमओ यह एक है [एमएसबिल्ड के साथ समस्या] (https://github.com/Microsoft/msbuild/issues/1469) – StingyJack

उत्तर

8

आप दोनों वर्ग पुस्तकालय परियोजना और परियोजना संदर्भित रूप में अच्छी तरह के Microsoft.CodeAnalysis पैकेज जोड़ने के लिए।

11

सबसे अधिक संभावना है क्योंकि आप अपने कोड में Microsoft.CodeAnalysis.CSharp.Workspaces संदर्भ नहीं है, अर्थात आपको इस dll में एक प्रकार या विधि का उपयोग कभी नहीं, इसलिए MSBuild सोचता है कि यह आवश्यक नहीं है यह है (उदाहरण के लिए this प्रश्न देखें)।

तो आप क्या कर सकते हैं उदा। निम्न पंक्ति कहीं जोड़ने अपने वर्ग पुस्तकालय परियोजना में:

var _ = typeof(Microsoft.CodeAnalysis.CSharp.Formatting.CSharpFormattingOptions); 

फिर MSBuild Microsoft.CodeAnalysis.CSharp.Workspaces.dll पर कॉपी चाहिए और सब कुछ ठीक हो जाना चाहिए। अन्य सभी परियोजनाओं से NuGet पैकेजों को संदर्भित करने की आवश्यकता नहीं है।

+0

मेरे मामले में मैं एक स्टैंडअलोन कमांडलाइन ऐप में रोज़लिन के माध्यम से एक समाधान लोड कर रहा था और सभी परियोजनाएं लोड करने में विफल रहीं क्योंकि मेरे पास मेरे ऐप में पूरी तरह से संदर्भित पैकेज नहीं था। एक nuget संदर्भ जोड़ना इसे तय किया। –

संबंधित मुद्दे