12

मेरे पास मेरे कंप्यूटर पर VS2010 और VS2012 स्थापित है और .NET Framework 4.0 था जिसे मैंने .NET Framework 4.5 में अपग्रेड किया था। हालांकि, मैं अभी भी ऐसे ऐप्स विकसित कर रहा हूं जिन्हें .NET Framework 4.0 पर काम करने की आवश्यकता है। प्रोजेक्ट का कहना है कि यह .NET Framework 4 (क्लाइंट प्रोफाइल) को लक्षित कर रहा है, असेंबली संदर्भित असेंबली के तहत .NET Framework 4.0 फ़ोल्डर को इंगित करती हैं। समस्या तब आती है जब मैं इस एप्लिकेशन को उस मशीन पर ले जाता हूं जिसमें केवल 4.0 है, यह शुरू नहीं होगा और त्रुटियों के साथ आ जाएगा, तत्काल समस्या WindowState={Binding WindowState} से अपवाद होने के कारण जो आप 4.0 में नहीं कर सकते हैं लेकिन आप 4.5 में कर सकते हैं। मुझे अपने विकास बॉक्स पर अपवाद फेंकने की ज़रूरत है, क्यों नहीं? मेरी धारणा यह है कि मेरे सर्वोत्तम प्रयासों के बावजूद यह मौजूद है कि यह 4.5 डीएलएस का उपयोग करता है। मैं 4.5 को अनइंस्टॉल किए बिना वास्तव में 4.0 का उपयोग कैसे कर सकता हूं?फ्रेमवर्क 4.5 स्थापित होने पर .NET Framework 4 को लक्षित करना

अद्यतन

इस .NET फ्रेमवर्क 4.5 स्थापित करने और एक WPF परियोजना .NET फ्रेमवर्क 4.0 को लक्षित बनाने repro करने के लिए। विंडोस्टेट को किसी वीएम में किसी संपत्ति में बांधें या पीछे दिए गए कोड को इस संपत्ति को सार्वजनिक और निजी सेट करें। .NET Framework 4.5 यह ठीक है जब भी मोड = दोवे को सेट को अनदेखा करना होगा। .NET Framework 4 अपवाद नहीं करता है और एक अपवाद फेंकता है: "एक दोवे या OneWayToSource बाध्यकारी केवल पढ़ने योग्य संपत्ति 'राज्य' प्रकार पर काम नहीं कर सकता .. । "। .NET Framework 4.5 के साथ बॉक्स पर एक आकर्षण की तरह काम करता है, इसे केवल .NET Framework 4.0 के साथ मशीन पर आज़माएं और यह उड़ाता है ... तो 4.5 के बाद 4.0 को वास्तव में लक्षित करने के तरीके पर कोई विचार स्थापित किया गया है? एमएस यहाँ के

बग रिपोर्ट: https://connect.microsoft.com/VisualStudio/feedback/details/774694/targeting-net-framework-4-0-when-4-5-doesnt-seem-to-work

+0

यदि आप .NET 4.0 को लक्षित कर रहे हैं, तो आपके पास ऐसा कोड क्यों है जो केवल .NET 4.5 में काम करता है? –

+2

मान लें कि यह सटीक है (मुझे शक है), यह आपके देव बॉक्स पर अपवाद नहीं फेंकता है क्योंकि आपके पास अब .NET 4.0 स्थापित नहीं है। .NET 4.5 ने इसे बदल दिया। –

+0

@ जॉन: वह नहीं जानता था कि यह केवल 4.5 में काम करता है। वह अपवाद तब भी करना चाहता है जब उपयोगकर्ता .NET 4.5 स्थापित हो। – Cameron

उत्तर

3

यह .NET Framework 4.5 में एक बग प्रतीत होता है और इसे अपवाद फेंकना चाहिए, लेकिन .NET Framework 4.5 के साथ स्थापित किया गया है। .NET Framework 4.0 पर आपका एप्लिकेशन चलाने का कोई तरीका नहीं है, यह हमेशा 4.5 का उपयोग करेगा।

इस बारे में अधिक जानकारी के लिए बग रिपोर्ट देखें: http://connect.microsoft.com/VisualStudio/feedback/details/773682/wpf-property-with-private-setter-is-updated-by-a-twoway-binding

3

इस सवाल बाज़ी के लिए समय। मैं डब्ल्यूपीएफ पर कोई विशेषज्ञ नहीं हूं, इस तरह की समस्याओं के लिए इसे बहुत पसंद नहीं करता, निर्भरता संपत्ति की समस्याओं को डीबग करना एक दुःस्वप्न है। लेकिन मुझे बहुत आश्वस्त है कि आप एक भूत का पीछा कर रहे हैं। विंडोस्टेट 3.0 पर वापस एक निर्भरता संपत्ति रही है, 4.5 में कुछ भी विशेष नहीं हुआ है जिसे मैं देख सकता हूं या कभी सुना सकता हूं।

आपको किसी प्रकार का त्रुटि संदेश मिला है कि कोई भी यह नहीं देख सकता कि आपको बाध्यकारी के साथ कुछ करना है। मैं मिसौरी, शो मी स्टेट से हूं। खैर, विस्कॉन्सिन के लिए काफी करीब है।

कोड पर काम करने में अधिक समय बिताएं जो आपको एक विश्वसनीय अपवाद संदेश और स्टैक ट्रेस देता है जो आपको उस मशीन पर त्रुटियों का निदान करने में मदद करता है, जिसे आप तैनात कर रहे हैं, यह जानने में आपकी मदद करने के लिए कि क्या गलत हो रहा है। आप AppDomain.CurrentDomain.UnhandledException ईवेंट के लिए इवेंट हैंडलर लिखकर ऐसा करते हैं। E.ExceptionObject.ToString() वापसी मान लॉग या प्रदर्शित करें। यह आपको अपवाद संदेश और पवित्र स्टैक ट्रेस देता है। यदि इससे मदद नहीं मिलती है तो आपने जो प्रश्न देखा उसके साथ अपना प्रश्न अपडेट करें।

+0

मुझे नमूना प्रोजेक्ट में रेपो करने के लिए यह नहीं मिल रहा है, इसलिए विंडो स्थिति के बारे में शिकायत करने का अनुमान कुछ और है लेकिन देव बॉक्स पर यह ठीक काम करता है। परीक्षण बॉक्स पर अपवाद फेंकता है लेकिन यदि मैं परीक्षण बॉक्स पर .NET Framework 4.5 स्थापित करता हूं तो ठीक काम करता है। तो .NET Framework 4.0 और .NET Framework 4.5 के बीच अपमानजनक रूप से भिन्न व्यवहार है। – user1914199

+1

मैं शो मी स्टेट रवैये के बारे में बहुत स्पष्ट था। मैंने समझाया कि आपको इसे दिखाने के लिए क्या करना है। अभी भी कुछ भी नहीं देख सकता है। मुझे दिखाओ। –

+0

यह वास्तव में एक बग है जिसे हम अपनी विकास टीम में पुन: पेश करने में कामयाब रहे। तो निश्चित रूप से मौजूद है। – MaYaN

0

आपने कहा कि आप इसे एक परीक्षण परियोजना में पुन: पेश नहीं कर सकते हैं। तो इसका तात्पर्य है कि यह कुछ ऐसा हो सकता है जो 4.0 में ठीक काम करेगा? आपके पास कोड का कुछ संयोजन हो सकता है जो 4.0 में बग पर क्रैश हो रहा है, जिसे 4.5 में तय किया गया था। जब आप 4.0 को लक्षित करते हैं, तो आपको केवल एपीआई/सुविधाओं का उपयोग करने का प्रयास करने पर चेतावनियां मिलेंगी जिन्हें संकलक निर्धारित कर सकते हैं 4.0 में समर्थित नहीं हैं।

कुछ जो शायद 4.0 में काम करना चाहिए कुछ शायद ही कभी देखा गया बग के कारण दुर्घटनाग्रस्त हो सकता है, और फिर 4.5 में तय किया जा सकता है। जब आपका 4.0 लक्षित ऐप 4.5 पर्यावरण के तहत चलता है, तो यह 4.0 में मौजूद सुविधाओं के लिए बग फिक्स से प्रभावित होगा।

4.0 के लिए एक अद्यतन हो सकता है जिसमें बग फिक्स शामिल है, इसलिए यदि उपयोगकर्ता किसी कारण से प्रतिकूल हैं तो 4.5 अपग्रेड की आवश्यकता नहीं है। तो यह 4.5 परिवर्तन भी नहीं हो सकता है, लेकिन यह केवल एक संयोग है कि कुछ उपयोगकर्ताओं के पास 4.0 के लिए उपलब्ध सभी अपडेट नहीं हैं (जो आपके 4.5 में संचयी रूप से शामिल होते हैं)।

इस तरह के मामलों में मुझे शायद ही कभी सामना करना पड़ा है, लेकिन कभी-कभी ऐसा होता है और डेस्कटॉप का समर्थन करने वाले लोग .NET अनुप्रयोगों को उपयोगकर्ताओं को अपडेट करने के लिए कुख्यात हैं। खर्च करने से पहले विषम मुद्दों को हल करने के लिए पहली कोशिश के रूप में .NET ढांचे समय समस्या निवारण।

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

+0

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

+0

यह बहुत अच्छा होगा अगर विजुअल स्टूडियो से रन/डीबग प्रोजेक्ट उस लक्षित संस्करण के लिए किसी प्रकार का .NET रनटाइम स्नैपशॉट का उपयोग करेगा। हालांकि, लक्ष्यीकरण ऐसा करने का इरादा नहीं है। कुछ चीजें बस कंपाइलर द्वारा पकड़ा नहीं जा सकता है। एक विशिष्ट ढांचे को लक्षित करते समय, यह केवल एपीआई, प्रकार, विशिष्ट फ़ंक्शन अधिभार आदि का उपयोग करने जैसी चीज़ों को पकड़ सकता है जो उस संस्करण में मौजूद नहीं थे। कंपाइलर कोड नहीं चला सकता है और देख सकता है कि यह एक पथ नीचे चला गया है जो अपवाद फेंक देगा। समान रेखाओं के साथ, कॉन्फ़िगरेशन रूपांतरणों को रन/डीबग के दौरान कोई प्रभाव नहीं पड़ता है जिससे उन्हें परीक्षण करना मुश्किल हो जाता है :( – AaronLS

0

नेट 4.5 की जगह शुद्ध नई, समान नाम वाले पुस्तकालयों के साथ 4.0, कि वास्तव में कुछ सुधार हैं। यह संक्षिप्त उत्तर है।

पिछले संस्करणों के विपरीत, .NET 4 से 4.5 को अद्यतन करने के बजाय, फ़ाइलों को प्रतिस्थापित करने के बजाय, फ़ाइलों को प्रतिस्थापित करता है। भले ही आपके पास इस Windows/Microsoft.Net/Framework/v40 /, जैसे फ़ोल्डर हैं, अद्यतन के बाद, इस फ़ोल्डर में कोई बदलाव है। फ़ाइलें बदली गई हैं, कुछ त्रुटियों को डेवलपर की चिंता के बिना .NET में संभाला गया था।

.NET 4.5 का उपयोग कर 4.0 ढांचे को कैसे लक्षित करें? मैं अभी भी पता नहीं है, लेकिन मैं अभी भी खुदाई कर रहा हूँ

इस विषय पर पढ़ सुझाव:

स्कॉट Hanselman: http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx

रिक Strahl: http://weblog.west-wind.com/posts/2012/Mar/13/NET-45-is-an-inplace-replacement-for-NET-40

और समान समस्या, मेरे द्वारा निर्मित: https://stackoverflow.com/questions/26483168/errors-on-net-4-0-dont-appear-on-net-4-5

0

समाधान:

मैं एक ही समस्या है जब स्थापित VS2017 के बाद VS2015 मिल गया है: फ्रेमवर्क 4.0 बस परियोजना लक्ष्य सूची से गायब हो गया।

कुछ टिप्पणियाँ यहाँ मैं NuGet पैकेज के साथ की कोशिश की है के बाद: Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.1 के लिए 1.0.4 और बिन ठीक।

ऐसा मत करो! मेरा निर्माण समय उसी परियोजना के लिए ~ 300% ऊपर चला गया। यह आपदा थी।

मुझे लगता है कि 4.5 4.0 के लिए "जगह प्रतिस्थापन" है, हालांकि यह स्पष्ट नहीं करता है कि मैं अपने लक्ष्य ढांचे कॉम्बो में दोनों विकल्पों को क्यों नहीं देख सकता।

मैं पूरे वेब पर एक ही मंत्र पढ़ रहा था। यह बस समस्या का जवाब नहीं है। फ्रेमवर्क 4।0 किसी भी औद्योगिक मशीनरी से संबंधित सॉफ़्टवेयर के लिए होना चाहिए - क्योंकि यह विंडोज एक्सपी पर चलता है, जबकि .NET 4.5। मेरे परिदृश्य में बेकार है, और शायद कई अन्य वास्तविक जीवन सामग्री के लिए।

समाधान सरल है: तुम सिर्फ आधिकारिक वेब पेज से डाउनलोड करने के लिए और विजुअल स्टूडियो 2013 स्थापित एक्सप्रेस है: https://www.microsoft.com/en-us/download/details.aspx?id=44914

यह स्थापित करने के बाद, बस अपने VS2015 खोलने के लिए और आप देखेंगे 4.0 फिर से।

enter image description here

... "जगह प्रतिस्थापन में ..." मेरी .... जवाब का


यह है फिर से पोस्ट मैं एक नकली सवाल पर दे दी है। मैं यहां पोस्ट कर रहा हूं क्योंकि इस धागे पर अधिक ध्यान दिया गया है और मौजूदा उत्तरों यहां इस मुद्दे के लिए कोई समाधान नहीं देते हैं।