2012-11-19 24 views
14

पर चलाने के लिए .NET 2.0 के साथ निर्मित सी # एप्लिकेशन को अनुमति दें हमारे पास एक सी # डीएलएल है (चलो इसे myapp.exe पर कॉल करें) .NET 2.0 फ्रेमवर्क (वीएस2005) के साथ बनाया गया है और हमने पाया है कि हमारा एप्लिकेशन काम नहीं करेगा मशीनों पर जहां केवल .NET 4.0 या ऊपर स्थापित है। .NET 4.0 पर हमारे आवेदन काम करने दें, मैं इस लेख Installing .NET Framework V4.0 and Running .NET 2.0/3.0/3.5/3.5Sp1 Applications.NET 4.0/4.5

<startup> 
    <supportedRuntime version="v4.0.30319"/>  
</startup> 

का पालन करते हुए निम्नलिखित myapp.exe.config करने के लिए कुछ पंक्तियां जोड़ी और यह काम कर रहा है।

तब मैंने देखा कि इस अनुच्छेद यह भी कहा कि निम्नलिखित (विशेष रूप से दूसरा पैराग्राफ): अब

, मैं जानता था कि तुम सिर्फ एक 3.5 सर्विस पैक 1 आवेदन नहीं लेने के लिए और पर यह चला सकते हैं वी 4.0 सीएलआर। V4.0 CLR पर चलाने के लिए एप्लिकेशन को मोड़ने के लिए इसे टैग के साथ V2.0 CLR या पुन: कॉन्फ़िगर करना आवश्यक है और यह झुकने ऐसा कुछ हो जिसे आप नहीं करना चाहते हैं।

जो मुझे नहीं पता था कि .NET 4.0 स्थापित करना बिट्स स्थापित नहीं करेगा जो आपको 2.0/3.0/3.5/3.5 एसपी 1 एप्लिकेशन के लिए आवश्यक है। यह केवल वी 4.0 सीएलआर और वी 4.0 असेंबली स्थापित करेगा और इसके अतिरिक्त .NET Framework V3.5 SP1 के समतुल्य को स्थापित नहीं करेगा। तो, आप (उदाहरण के लिए) स्थापित करने की आवश्यकता होगी .नेट फ्रेमवर्क V3.5 Sp1 खुद के साथ साथ नेट 4,0

मेरी परीक्षण यह है कि मैं के साथ .NET 4.0 पर मेरे 2.0 सी # आवेदन चला सकते हैं मतलब होगा से .NET 4.0 ढांचे (4.0 असेंबली/पुस्तकालय) जो लेखों के अनुसार विरोधाभासी है।

या क्या मुझे यहां कुछ याद आ रही है? अगर कोई इस पर स्पष्टीकरण दे सकता है तो यह सहायक हो सकता है। माइक्रोसॉफ्ट वास्तव में यह स्पष्ट नहीं करता है।

+0

पूर्ण संस्करण स्थापित करें, ग्राहक प्रोफ़ाइल नहीं। –

+0

यकीन नहीं है कि पूर्ण संस्करण और ग्राहक प्रोफाइल यहां कोई फर्क नहीं पड़ता है? – windfly2006

+1

हर कोई यह जानता है कि मुझे यकीन है, लेकिन उपरोक्त स्निपेट को '' '' -tag में काम करने की आवश्यकता है। – mhvelplund

उत्तर

5

मेरे परीक्षण से इसका मतलब यह होगा कि मैं .NET 4.0 फ्रेमवर्क (4.0 असेंबली/पुस्तकालय) के साथ .NET 4.0 पर अपना 2.0 सी # एप्लिकेशन चला सकता हूं जो कि लेखों के अनुसार है।

आप .NET 4 विधानसभाओं का उपयोग कर .NET 4 पर अपने आवेदन चला सकते हैं। हमेशा संभावना है कि रनटाइम व्यवहार में मामूली बदलाव हो सकता है, हालांकि, आप उसी रनटाइम और फ्रेमवर्क का उपयोग नहीं करेंगे जिसका उपयोग आपने विकास के लिए किया था। मुझे संदेह है कि लेख यह सुझाव देने का प्रयास कर रहा है कि आपको केवल 4.0 इंस्टॉल करके सटीक व्यवहार नहीं मिलेगा, जैसा कि आपने देखा है, इसे काम करना चाहिए।

ऐसा करने की संभावना ठीक है, हालांकि मैं आपके आवेदन की पूरी तरह से जांच करने की सलाह दूंगा यदि यह मानक तैनाती विकल्प होने जा रहा है।

+0

.net 4.0 पुराने संस्करण के बिना अकेले स्थापित नहीं किया जा सकता है (3.5 sp1/3.5) – K3rnel31

+0

@ K3rnel31 यह हो सकता है - आपको केवल अपने ऐप को सीएलआर 4 का उपयोग करने के लिए मजबूर करने की आवश्यकता है ... –

+0

मेरा मतलब है मशीन .net 4.0 उपरोक्त संस्करणों के बिना अकेले स्थापित नहीं किया जा सकता क्योंकि .NET 4.0/4.5 यह 3.5sp1/sp2 के लिए सिर्फ एक अद्यतन है .. – K3rnel31

-3

बस web.config को समर्थित करने के लिए सेटिंग रनटाइम संस्करण = "v4.0.30319"/पर्याप्त नहीं होगा।

आपको वास्तव में विजुअल स्टूडियो में अपनी प्रोजेक्ट खोलने की आवश्यकता है, इसके लक्ष्य ढांचे (गुण -> बिल्ड) को 4.0 में बदलें - और फिर अपने 4.0 क्लाइंट के लिए निर्मित समाधान को पुनर्स्थापित करें। 2.0 और 4.0 (system.web आदि ..) के बीच कई सिस्टम असेंबली अलग-अलग हैं - हालांकि, जैसा कि पिछले उत्तर का सुझाव दिया गया है, पिछड़ा संगतता प्रदान की गई है।

लगातार अपने ग्राहकों को एक अभिनव '4.0 संगत' संस्करण के साथ प्रदान करने का एकमात्र तरीका है, इसे 4.0 रनटाइम के विरुद्ध संकलित करना है।यह किसी भी तृतीय पक्ष, ओपन सोर्स लाइब्रेरी को अपने 4.0 संस्करणों में भी अपग्रेड करने में सक्षम होगा।

+1

नहीं हैं 1 यह वेब अनुप्रयोग नहीं है दूसरा उद्देश्य असेंबली को .NET 2.0 में रखना है और इसे अन्य सभी संस्करणों पर काम करना है .. – K3rnel31

+1

Yup। समझ लिया। उपर्युक्त सभी अभी भी लागू होते हैं। आपको अभी भी 4.0 एपटाइम के विरुद्ध अपने ऐप (Winforms ऐप या जो कुछ भी है) को फिर से संकलित करने की आवश्यकता है। App.config को बदलना कुछ भी सुनिश्चित नहीं करता है।यह मानने के लिए कि यह अन्यथा काम करेगा, यह एक बड़ा जोखिम है - यह मई - लेकिन इस बात पर निर्भर करता है कि तीसरे पक्ष के असेंबली का लाभ उठाया जा रहा है (nHibernate, log4net आदि ...) जब तक कि आप उन सभी को अपने सही (4.0) संस्करणों में अपग्रेड न करें और उनके खिलाफ recompile, आप विफलता के लिए सेट कर रहे हैं। बहुत बुरा आपने एक उत्तर स्वीकार किया जो असली दुनिया के अनुभव के विपरीत है (यह केवल बहुत सीमित मामलों में काम करता है) ... – user2736158

7

और मैं बोली:

".NET फ्रेमवर्क 4 कि .नेट फ्रेमवर्क संस्करण 1.1, 2.0, 3.0 और 3.5 के साथ बनाया गया अनुप्रयोगों के साथ पार्श्व-संगत है दूसरे शब्दों में, अनुप्रयोगों और घटकों का निर्माण किया है। .NET Framework के पिछले संस्करणों के साथ .NET Framework 4 पर काम करेगा। "

से Version Compatibility in the .NET Framework

लिया आप App.config फ़ाइल के साथ सही पता नहीं है, लेकिन अपने वास्तव में एक लाइन के साथ अपने आप को सीमित।
क्या मैं समर्थित रनटाइम लाइनों का अधिक उदार उपयोग सुझा सकता हूं?

उदाहरण के लिए:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v2.0.50727"/> 
    <!-- 
    <supportedRuntime version="v3.5"/> "The .NET Framework version 3.0 and 3.5 use version 2.0.50727 of the CLR." 
    --> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" /> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.1,Profile=Client" /> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.1" /> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.2,Profile=Client" /> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.2" /> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3,Profile=Client" /> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3" /> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
</configuration> 

क्यों supportedRuntime version="v3.5" बाहर टिप्पणी की है? याद रखें, यह कॉन्फ़िगरेशन पहचानता है कि आपके भाषा के सामान्य भाषा रनटाइम (सीएलआर) के कौन से संस्करण संगत हैं। सीएलआर का कोई 3.0 या 3.5 संस्करण नहीं है। .NET Framework Versions and Dependencies

+0

क्या आप समझा सकते हैं कि आपने v3.5 लाइन पर टिप्पणी क्यों की? – ananda

+1

@ananda क्योंकि, यह आवश्यक नहीं है। इस पते को हल करने के लिए मेरा जवाब अपडेट किया गया। –

1

का संदर्भ लें बस थोड़ा और संक्षिप्त होना। App.config में आप सीएलआर के लिए समर्थन दिखा रहे हैं। .Net v2 से और केवल 2 version of the CLR हैं। तो निम्नलिखित आपको नेट v2 और ऑन का समर्थन देगा। अपनी परियोजना के साथ बनाई गई exe.config फ़ाइल को शामिल करना सुनिश्चित करें अन्यथा आपको अभी भी इंस्टॉल करने के लिए पूछे जाने वाले पॉपअप को देखने की संभावना है। नेट।

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

v3.5 उपयोग करने के लिए नेट वी 2 के लिए समर्थन के लिए:

<supportedRuntime version="v2.0.50727"/> 

नेट v4.0 के लिए समर्थन के लिए 4.6 उपयोग करने के लिए:

<supportedRuntime version="v4.0"/> 

अधिक जानकारी पाया जा सकता है Configure an App to Support .NET Framework

+0

यह मेरे लिए काम नहीं किया। मैंने अपने ऐप.कॉन्फिग में इस सटीक प्रविष्टि का उपयोग किया। मैंने इसे नेट फ्रेमवर्क 2.0 पर लक्ष्य सेट के साथ बनाया और इसे केवल नेट फ्रेमवर्क 4 के साथ Win10 सिस्टम पर चलाया, यह "नेट फ्रेमवर्क 3.5" स्थापित करने के लिए कहा गया। मैंने इसे नेट फ्रेमवर्क 4.6.1 पर लक्ष्य सेट के साथ बनाया और इसे केवल नेट फ्रेमवर्क 3.5 के साथ सिस्टम पर चलाया, यह संकेत दिया गया कि "आपको पहले .NET Framework के निम्न संस्करणों में से एक स्थापित करना होगा" और केवल सूचीबद्ध v4.0.30319। – IronRod

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

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