2017-01-06 14 views
6

पर नहीं चल रहा है मेरे पास एक प्रोग्राम है जिसे मैं .NET मानक/कोर पर माइग्रेट करने का प्रयास कर रहा हूं। लाइब्रेरी में कमांड लाइन इंटरफ़ेस netcoreapp1.0 के लक्ष्य ढांचे के साथ बनाया गया है। मैंने इसे एक परीक्षक (एक अलग ओएस के साथ) भेजने की कोशिश की, जिसमें केवल .NET कोर 1.1 स्थापित था। कार्यक्रम नहीं चलेगा, और त्रुटि देता है:.NET कोर 1.0 ऐप .NET कोर 1.1 सिस्टम

The specified framework 'Microsoft.NETCore.App', version '1.0.1' was not found. 
- Check application dependencies and target a framework version installed at: 
    /usr/share/dotnet/shared/Microsoft.NETCore.App 
- The following versions are installed: 
    1.1.0 
- Alternatively, install the framework version '1.0.1'. 

क्या यह अपेक्षित है? जैसा कि मैंने इसे समझा, प्रत्येक कोर/मानक संस्करण पहले के सख्त सुपरसैट था। इस प्रकार, मुझे उम्मीद है कि एक प्रोग्राम जो लक्षित 1.0 अभी भी प्रत्येक इंस्टॉलेशन संस्करण को बहु-लक्षित करने के बजाय 1.1 के साथ सिस्टम पर चलाएगा।

अधिक आम तौर पर, मैं चीजों को कैसे सेट अप कर सकता हूं ताकि मुझे बाद में किसी उपयोगकर्ता के बारे में चिंता न करें, .NET कोर के केवल एक नए संस्करण के साथ प्रोग्राम चलाने में असमर्थ है?

+3

'1.1.0'! =' 1.0.1' –

उत्तर

2

आपको कुछ और अवधारणाओं को समझने की आवश्यकता है।

  1. यदि आप dotnet publish का उपयोग करते हैं तो एक .NET कोर ऐप स्वयं निहित हो जाता है। फिर उस लक्ष्य मशीन पर जिसमें .NET कोर स्थापित नहीं है (या संस्करण जो इसके खिलाफ बनाता है) ऐप बिना किसी समस्या के चला सकता है। आपके विवरण के आधार पर, आप शायद ऐसा करना भूल जाते हैं या आप इस ऐप को प्रकाशित करने की कोशिश नहीं कर रहे हैं।

  2. यदि आपका इरादा सिर्फ आपके .NET कोर 1.0.1 आधारित कोड को दूसरी मशीन पर ले जाने के लिए है और उस मशीन में केवल 1.1.0 इंस्टॉल है, तो, आपको आवश्यक रनटाइम स्थापित करने के लिए dotnet-install स्क्रिप्ट चलाने में सक्षम होना चाहिए,

https://docs.microsoft.com/en-us/dotnet/articles/core/preview3/tools/dotnet-install-script

जब से तुम दृश्य स्टूडियो 2017 का उपयोग कर रहे आर सी पहले से ही, आपको पता होना चाहिए कि नेट कोर 1.0.x अब 1.0.3 होना चाहिए। 1.0.0-1.0.2 के लिए समर्थन समाप्त हो गया है।

+0

1.0.1 पूर्वावलोकन 4 टूलिंग के लिए डिफ़ॉल्ट था, जो इस समय .csproj परियोजनाओं का समर्थन करने के लिए एसडीके का एकमात्र संस्करण है (पूर्वावलोकन 3 अब उपलब्ध नहीं है)। सौभाग्य से मैंने पाया है कि पूर्वावलोकन 4 अभी भी सही nuget पैकेज का उपयोग कर 1.1.0 (साथ ही 1.0.3, आदि) का निर्माण कर सकता है, और इसके साथ कई प्रयोगों के माध्यम से मैंने प्रोग्राम को 1.1 के रूप में प्रकाशित करने का निर्णय लिया है । यह समस्या को हल नहीं करता है "क्या 1.2 जारी होने पर यह चल जाएगा, और यह लक्ष्य मशीन पर एकमात्र संस्करण स्थापित है?", हालांकि, लेकिन मैं इसे अभी बंद कर सकता हूं। – dsmith

2

आप एक वैश्विक.जेसन खो रहे हैं। अपनी प्रोजेक्ट में एक जोड़ें ताकि एप्लिकेशन 1.0.0 रनटाइम के साथ बूट करने के लिए जानता हो और 1.1 नहीं।

+0

मुझे जो चाहिए, जैसे ध्वनि की तरह, लेकिन काफी नहीं। मैं वीएस 2017 में निर्माण कर रहा हूं (उसमें उल्लेख किया जाना चाहिए था), जिसका अर्थ है कि मैं .csproj/msbuild का उपयोग कर रहा हूं, प्रोजेक्ट.जेसन/ग्लोबल.जेसन नहीं। यह * एक [projectname] उत्पन्न कर रहा है। Runtimeconfig.json प्रकाशित निर्देशिका में जो संस्करण को चलाने के लिए निर्दिष्ट करता है, और यह 1.0.0/1.0.1/1.0.2/1.0.3 के साथ स्थानीय रूप से काम करता है, लेकिन 1.0 पर नहीं। 4 (इसलिए, 1.0 लाइन के लिए अपेक्षित)। यह 1.1.0 पर लक्ष्य 1.0.4 नहीं चलाएगा, या तो, हालांकि। – dsmith

+1

@dsmith मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे पूरा यकीन है कि वीएस2017 और सीस्पोज़ प्रारूप में भी, वैश्विक.जेसन अभी भी एसडीके संस्करण निर्दिष्ट करने के लिए उपयोग किया जाता है। global.json और project.json एक ही बात नहीं हैं। – Kushan

+0

सच है, लेकिन global.json फ़ाइल निर्दिष्ट करने के लिए निर्माण उपकरण का कौन सा सेट निर्दिष्ट करने के लिए है, किसी भी रनटाइम सामग्री में से कोई नहीं। चूंकि मेरे पास .csproj प्रोजेक्ट्स हैं, मेरे लिए केवल वैध उपकरण पूर्वावलोकन 4 हैं, जो केवल समर्थन करते हैं .csproj (पूर्वावलोकन 3 भी काम करेगा, लेकिन मेरे पास उस संस्करण में से कोई भी इंस्टॉल नहीं है)। सभी पूर्वावलोकन 2 टूल केवल project.json का समर्थन करते हैं, जिसका अर्थ है कि वे बिल्कुल काम नहीं करेंगे। चूंकि मेरे पास एकमात्र विकल्प हैं, इसलिए ग्लोबल.जेसन में कुछ भी नहीं बदल सकता है जो एक फर्क पड़ेगा। हालांकि, अभी भी खोदने के लिए उपयोगी था। – dsmith