2017-12-08 41 views
5

मैं C# प्रोजेक्ट पर काम करने के लिए Windows 10 पर VS2017 का उपयोग कर रहा हूं। यह वास्तव में एक छोटा कंसोल ऐप है जो कुछ भी नहीं करता है लेकिन प्रशासक विशेषाधिकारों की आवश्यकता होती है और फिर एक एचटीए चलाती है।किसी .NET संस्करण पर काम करता है जो किसी भी .NET संस्करण पर काम करता है यदि केवल बुनियादी आवश्यकताएं

केवल कोड संदर्भ इन .NET विधानसभाओं:

using System; 
using System.Diagnostics; 
using System.IO; 

इन सब के बाद से 2.0 के बाद से नेट में मौजूद हैं और आगे, ऐसा लगता है यह सिवाय कुछ भी बताए बिना एप्लिकेशन को बनाने के लिए संभव हो जाना चाहिए। नेट 2.0। लेकिन ऐसा करने से ऐप को सिस्टम पर चलने पर ".NET 2.0 या 3.5" स्थापित करना होगा, जिसमें केवल .NET 4.0 या इससे अधिक है।

क्या इस ऐप को बनाने का कोई तरीका है, इसलिए यह .NET संस्करण निर्दिष्ट नहीं करता है? मैंने .csproj फ़ाइल से <TargetFrameworkVersion> को हटाने का प्रयास किया लेकिन यह अभी भी सोच रहा है कि यह एक .NET 4.0 ऐप है।

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0"/> 
</startup> 

मैं तो नेट के लिए निर्धारित लक्ष्य के साथ बनाया गया:

अद्यतन

एक सुझाव दिया जवाब के आधार पर और इस article, मैं इसे दोनों v2 और v4 का समर्थन करता है दिखाने के लिए App.config अद्यतन फ्रेमवर्क 4.6.1 और इसे Win7Pro-64bit सिस्टम पर चलाया गया जिसमें केवल नेट फ्रेमवर्क 2.0/3.5 स्थापित है। यह संदेश प्रदर्शित करता है "आपको पहले .NET Framework के निम्न संस्करणों में से एक स्थापित करना होगा" और केवल सूचीबद्ध v4.0.30319।

फिर मैंने लक्ष्य फ्रेम के साथ नेट फ्रेमवर्क 2.0 पर बनाया और इसे केवल Win Framero 4.0 स्थापित के साथ Win10Pro-64bit सिस्टम पर चलाया। यह एक संदेश प्रदर्शित करता है जिसे मुझे "नेट फ्रेमवर्क 3.5" करना था या मेरा ऐप सही तरीके से काम नहीं कर सकता था। मैंने "इसे छोड़ें" विकल्प की कोशिश की और ऐप काम नहीं किया।

लक्ष्य के अनुसार सिस्टम पर चल रहा है, ऐप ठीक काम करता है।

यह क्यों उपयोग नहीं करेगा जो भी फ्रेमवर्क उपलब्ध है क्योंकि इसे दोनों का समर्थन करने के रूप में नामित किया गया है?

+0

क्या आपने परियोजना के गुणों से "बिल्ड" टैब के ड्रॉप-डाउन पर "लक्ष्य ढांचा" संस्करण बदल दिया था? आपको इसे .NET 2.0 प्रोजेक्ट के रूप में बनाने में सक्षम होना चाहिए, और इसे 2.0 या उच्चतम वाले किसी भी कंप्यूटर पर चलाएं। –

+0

नहीं। आपको एक क्लियर संस्करण से बंधना होगा। या आप देशी असेंबली उत्पन्न कर सकते हैं। –

+0

हालांकि काफी व्यक्तिपरक है, मुझे लगता है कि अधिकांश डेवलपर्स को .NET 4.x का उपयोग करने और .NET 2.x/3.x को अलविदा कहने के लिए मजबूर कर दिया गया है। इस तरह के दर्द के बिना, कई विरासत प्लेटफॉर्म पर चिपके रहेंगे और अपग्रेड करने से इंकार करेंगे। दोबारा, .NET कोर और भी ब्रेकिंग परिवर्तन प्रस्तुत करता है। –

उत्तर

2

ऐप के अंदर। कॉनफिग आप रनटाइम का संस्करण निर्दिष्ट कर सकते हैं जिसका आप समर्थन कर सकते हैं।

https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-configure-an-app-to-support-net-framework-4-or-4-5

<configuration> 
    <startup> 
    <supportedRuntime version="v1.1.4322"/> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

कुछ भी साथ के रूप में, आपको लगता है कि आपके आवेदन वास्तव में निर्दिष्ट संस्करणों के सभी पर चला सकते हैं परीक्षण करना चाहिए।

+0

मैंने अपनी मूल पोस्ट अपडेट की। मैंने कोशिश की और यह इस लेख के बावजूद काम नहीं किया (https://docs.microsoft।com/en-us/dotnet/framework/माइग्रेशन-गाइड/कैसे-टू-कॉन्फ़िगर-ए-ऐप-टू-सपोर्ट-नेट-फ्रेमवर्क -4-या -4-5) कहता है कि इसे करना चाहिए। – IronRod

+0

यदि कोई मुझे नमूना कार्यक्रम के साथ आपूर्ति कर सकता है जो यह बहुत ही काम करता है - .NET 2.0/3.5 और .NET 4+ दोनों पर चलता है तो मैं बहुत सराहना करता हूं। मैं अभी भी इसे वीएस2017 15.5.7 के रूप में काम करने में सक्षम नहीं हूं। या, मैं अपना सरल कार्यक्रम प्रदान कर सकता हूं और देख सकता हूं कि आप इसे संकलित कर सकते हैं और यह आपके लिए काम कर रहा है या नहीं। – IronRod

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