2017-08-27 17 views
6

के बजाय .NET मानक \ Core को लक्षित करने की आवश्यकता है। मैं विजुअल स्टूडियो 2017 के साथ आए डिफ़ॉल्ट Roslyn SDK टेम्पलेट का उपयोग कर रहा हूं। वे परियोजनाएं जो .NET Framework पोर्टेबल को लक्षित करती हैं। मुझे लगता है कि रोज़लिन एक्स्टेंसिबिलिटी प्रोजेक्ट पोर्टेबल के बजाय .NET मानक \ Core को लक्षित कर सकता है और मैं टेम्पलेट्स या रोज़लिन विश्लेषक \ रेफैक्टरिंग प्रोजेक्ट का नमूना ढूंढ रहा हूं जिसे मैं पढ़ सकता हूं।Rosetn विश्लेषक को .NET पोर्टेबल

+0

यहां कोई समस्या है, या तो एक नई परियोजना शुरू करें और विश्लेषकों का संदर्भ लें, और उसके बाद इसे अपने बनाम से कॉल करें, या सीएसपीआरजे फ़ाइल को संशोधित करें, और पोर्टेबल लाइब्रेरी –

+1

को प्रतिस्थापित करें कोशिश की, लेकिन यह सीधे आगे नहीं है। क्या आप एक उदाहरण प्रोजेक्ट के बारे में जानते हैं, मैं इसे देख सकता हूं, जहां यह सफलतापूर्वक किया गया था? –

+0

एकमात्र परियोजना मुझे पता है कि मैं सफलतापूर्वक काम कर रहा हूं वह यहां है, जो मुझे नहीं लगता कि मेरी कंपनी शेयर की अनुमति देगी। लेकिन मैंने इस [उत्तर] के साथ पीछा किया (https://stackoverflow.com/a/23135170/1938988) –

उत्तर

4

मैंने एक नई रोज़लीन परियोजना पर काम करना शुरू कर दिया और टेम्पलेट का उपयोग करने के बजाय चीजों को एक-एक करके बनाया। https://github.com/IKoshelev/Roslyn.AutoLogging/commit/1f88e3e49141e0fa425c51fdcb3457a7c3d6dcaa

मैं निम्नलिखित लक्ष्यीकरण की सुविधा में कामयाब रहे: - नेट स्टैंडर्ड 1.3 (इस .dll वितरित किया जाएगा, संस्करण कम से कम रखा)

UnitTests परियोजना -

पुनर्रचना परियोजना नेट कोर 2.0

VSIX परियोजना - .NET फ्रेमवर्क 4.6 (मेरा मानना ​​है कि, केवल पूर्ण दृश्य स्टूडियो VSIX का समर्थन करता है, तो यह है कि ठीक है)

अद्यतन रोसलिन के संशोधन अभी थोड़ा और जटिल है, यानी यदि आप विजुअल स्टूडियो 2015 के साथ अपने एक्सटेंशन का उपयोग करना चाहते हैं तो आपको पीसीएल पुस्तकालयों का उपयोग करना होगा।इस आलेख के अंत में अधिक जानकारी article on Roslyn

7

डिफ़ॉल्ट विश्लेषक टेम्पलेट से परिवर्तित विश्लेषक का नमूना here उपलब्ध है। TestAnalyzerStandard के साथ तुलना के लिए मूल विश्लेषक है जो .NET मानक को लक्षित करता है।

कदम यह काम कर रहे हैं:

  • नया .NET स्टैंडर्ड पुस्तकालय
  • लाइब्रेरी बनाएं नेट स्टैंडर्ड 1.3 लक्ष्य बनाना होगा। यदि आप वीएस (एक्सटेंशन लक्ष्य .NET 4.6) के अंदर विस्तार के रूप में विश्लेषक चलाने की इच्छा रखते हैं तो यह आवश्यक है। मानक संस्करणों और पूर्ण ढांचे संस्करणों के बीच मैपिंग here उपलब्ध है। यदि आप 1.3 से कम संस्करण को लक्षित करने का प्रयास करते हैं, तो आप आवश्यक विश्लेषक पैकेज शामिल करने में सक्षम नहीं होंगे।
  • Microsoft.Composition नवीनतम संस्करण के लिए nuget पैकेज जोड़ें। इसकी आवश्यकता Microsoft.CodeAnalysis.CSharp.Workspaces है। यदि आप पहले वर्कस्पेस जोड़ने का प्रयास करते हैं, तो आपको त्रुटि मिलेगी जो संदर्भ पैकेज संदर्भित नहीं है।
  • Microsoft.CodeAnalysis.CSharp के लिए nuget पैकेज जोड़ें (मैं उपयोग कर रहा हूँ नवीनतम 1. * संस्करण)
  • Microsoft.CodeAnalysis.Csharp.Workspaces के लिए पैकेज nuget जोड़ें (संस्करण Microsoft.CodeAnalysis.CSharp के संस्करण से मेल खाना चाहिए)।
  • इस बिंदु पर आप पोर्टेबल प्रोजेक्ट से कोड कॉपी कर सकते हैं और इसे बना सकते हैं। कोई त्रुटि नहीं होनी चाहिए (अगर वीएस अभी भी लाल squiggles प्रदर्शित कर रहा है तो आपको समाधान बंद करना और फिर से खोलना पड़ सकता है)।
  • वी.एस. विस्तार के काम करने के लिये source.extension.vsixmanifest खोलते हैं, तो मानक पुस्तकालय नेट के लिए संपत्ति टैब और परिवर्तन संदर्भ के लिए जाना
  • पैकेज .nuget बनाने के लिए सिर्फ अमल nuget pack Diagnostic.nuspec .Diagnostic.nuspec Nuget 2.x के लिए मान्य है। यदि आप वीएस 2017 में पैकेज प्रबंधन कंसोल के माध्यम से nuget का उपयोग कर रहे हैं तो आपको <file src="*.dll" ..." को <file src="bin\*\netstandard1.3\*.dll" ... में बदलना होगा।

उन चरणों का विश्लेषण विश्लेषकों के साथ मेरे प्रयोग के परिणामस्वरूप हुआ है (मैंने पहले डीएलएल बनाने के साथ खेला था जो पोर्टेबल लाइब्रेरी होने की बजाय पूर्ण ढांचे को लक्षित करता था)। वे किसी भी माध्यम से आधिकारिक नहीं हैं।

+0

मैंने प्रोजेक्ट को संदर्भित किया है, हटा दिया है केवल मूल संस्करण छोड़कर विश्लेषक के पोर्टेबल संस्करण और इसे बनाने की कोशिश की। अब तक, वीएसआईएक्स काम नहीं करता है और नगेट में पैकेज में डीएल शामिल नहीं है। –

+0

मैं विजुअल स्टूडियो 2017 (15.2) में बनाम और न्यूज पैकेज दोनों का परीक्षण कर रहा था और वे दोनों ठीक काम कर रहे थे। मैंने पोर्टेबल विश्लेषक से संदर्भ हटा दिए और पैकेजिंग के लिए 'Diagnostic.nuspec' को इंगित करने के लिए '.csproj' फ़ाइल को अपडेट किया। अब आप 'TestAnalyzerStandard' ->' पैक 'पर राइट क्लिक करके विजुअल स्टूडियो से सीधे nuget पैकेज बना सकते हैं। Nuget पैकेज डीबग (या रिलीज) फ़ोल्डर में मौजूद होगा। मैंने 'testAnalyzerStandard \ Publish' फ़ोल्डर में निर्मित बनाम एक्सटेंशन और nuget पैकेज भी शामिल किया है ताकि आप देख सकें कि मेरी मशीन पर क्या उत्पादित किया गया है। – nejcs

+0

मुझे बाद में जांचना होगा (क्षमा करें, अब बहुत लोड हो गया है)। मैंने बक्षीस से सम्मानित किया। –

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