Visual Studio 2010 के माध्यम से .NET फ्रेमवर्क 4.5 को लक्षित करना


169

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

क्या दृश्य स्टूडियो 2010 से संस्करण 4.5 को लक्षित करना संभव है और यदि हां, तो कैसे? मैं वास्तव में रिबन का उपयोग करना चाहूंगा ...


.NET v4.5 समर्थन के लिए आपको Visual Studio 2012 में अपग्रेड करना होगा।
अरन

मुझे इस सीमा के बारे में तब पता चला, जब मैं VS.T अलार्म अलार्म एप्लीकेशन में System.Threading.Tasks.Task.Run () पद्धति का उपयोग करने की कोशिश कर रहा था। यदि आपकी परियोजना .Net फ्रेमवर्क 4.0 को लक्षित कर रही है और तब आपको पता चलता है कि टास्क क्लास में यह विधि दिखाई नहीं देती है और तब आपको पता चलता है कि VS2010 .Net फ्रेमवर्क 4.5 को लक्षित नहीं कर सकता है।
आरबीटी

जवाबों:


194

Visual Studio 2010 से पहले Visual Studio का प्रत्येक संस्करण एक विशिष्ट .NET फ्रेमवर्क से बंधा होता है। (VS2008 .NET 3.5 है, VS2005 .NET 2.0 है, VS2003 .NET1.1 है) विजुअल स्टूडियो 2010 और उससे आगे के पूर्व फ्रेमवर्क संस्करणों को लक्षित करने की अनुमति है लेकिन भविष्य में रिलीज के लिए इसका उपयोग नहीं किया जा सकता है। .NET 4.5 का उपयोग करने के लिए आपको Visual Studio 2012 का उपयोग करना होगा।


9
पूरी तरह से सच नहीं है - .NET 3.0 वीएस संस्करणों के बीच जारी किया गया था, और वीएस 200 में इस्तेमाल किया जा सकता है।
स्ली गिरीफॉन

9
क्या एक पहेली: vs2012 + के लिए माइग्रेट करने के लिए प्रिय vs2010 सेटअप प्रोजेक्ट को खोने की लागत पर .net 4.5 का उपयोग करने के लिए msi इंस्टालर को तैनात करने के लिए ... "अपग्रेड" एक
साइडग्रेड की

6
@ecoe - एक वी.एस. 2013 एक्सटेंशन है, जो वापस सेटअप और तैनाती परियोजना प्रकार लाता है: visualstudiogallery.msdn.microsoft.com/...
ajawad987

2
यह गलत है। इस सुविधा का उपयोग करने के लिए आपको अपग्रेड करने की आवश्यकता नहीं है। आपको बस एक नया संदर्भ जोड़ने की आवश्यकता है, फिर .NET 4.5 फ़ोल्डर में ब्राउज़ करें: C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \\। नेट फ्रेमवर्क \ 4.5। आपको वहां संदर्भ मिलेगा। बस इसे जोड़ें और यह काम करता है
हेमीज़ ट्रिस्मेगिस्टस

2
VSH 2010 में @HermesTrismegistus मैं "लक्ष्य फ़्रेमवर्क = अन्य फ़्रेमवर्क स्थापित करें" पर क्लिक करता हूं और यह मुझे एक वेबसाइट microsoft.com/net/download/visual-studio-sdks पर ले जाता है, यह मुझे किसी भी फ़ोल्डर में नेविगेट करने की अनुमति नहीं देता है। मुझे क्या करना चाहिए। मैं वीएस 2010 से 4.5 को लक्षित करने में सक्षम होना चाहिए। Tks।
इचबान

67

वहाँ बहुत सीमित परिदृश्य हैं कि मैं सोच सकता हूँ कि यह कहाँ उपयोगी होगा, लेकिन मान लें कि आप VS2012 या उस प्रभाव के लिए कुछ खरीदने के लिए धन प्राप्त नहीं कर सकते हैं। अगर ऐसा है और आपके पास विंडोज 7+ और वीएस 2010 है तो आप निम्नलिखित हैक का उपयोग करने में सक्षम हो सकते हैं जो मैं एक साथ रखता हूं जो काम करने लगता है (लेकिन मैंने अभी तक इस पद्धति का उपयोग करके पूरी तरह से एक एप्लिकेशन को तैनात नहीं किया है)।

  1. बैकअप अपनी परियोजना फ़ाइल !!!

  2. डाउनलोड करें और विंडोज 8 एसडीके को स्थापित करें जिसमें .NET 4.5 एसडीके शामिल है।

  3. VS2010 में अपना प्रोजेक्ट खोलें।

  4. Compile_4_5_CSharp.targetsनिम्नलिखित सामग्री के साथ अपने प्रोजेक्ट में एक पाठ फ़ाइल बनाएँ । (या बस इसे यहाँ डाउनलोड करें - फ़ाइल नाम से ".txt" एक्सटेंशन को निकालना सुनिश्चित करें):

    <Project DefaultTargets="Build"
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    
        <!-- Change the target framework to 4.5 if using the ".NET 4.5" configuration -->
        <PropertyGroup Condition=" '$(Platform)' == '.NET 4.5' ">
            <DefineConstants Condition="'$(DefineConstants)'==''">
                TARGETTING_FX_4_5
            </DefineConstants>
            <DefineConstants Condition="'$(DefineConstants)'!='' and '$(DefineConstants)'!='TARGETTING_FX_4_5'">
                $(DefineConstants);TARGETTING_FX_4_5
            </DefineConstants>
            <PlatformTarget Condition="'$(PlatformTarget)'!=''"/>
            <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
        </PropertyGroup>
    
        <!-- Import the standard C# targets -->
        <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
    
        <!-- Add .NET 4.5 as an available platform -->
        <PropertyGroup>
           <AvailablePlatforms>$(AvailablePlatforms),.NET 4.5</AvailablePlatforms>
        </PropertyGroup>
    </Project>
    
  5. अपने प्रोजेक्ट को अनलोड करें (राइट क्लिक -> अनलोड)।

  6. प्रोजेक्ट फ़ाइल संपादित करें (राइट क्लिक करें -> संपादित करें * .csproj)।

  7. प्रोजेक्ट फ़ाइल में निम्नलिखित परिवर्तन करें:

    ए। Microsoft.CSharp.targetsचरण 4 में बनाई गई लक्ष्य फ़ाइल के साथ डिफ़ॉल्ट को बदलें

    <!-- Old Import Entry -->
    <!-- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> -->
    
    <!-- New Import Entry -->
    <Import Project="Compile_4_5_CSharp.targets" />
    

    ख। डिफ़ॉल्ट प्लेटफ़ॉर्म को में बदलें.NET 4.5

    <!-- Old default platform entry -->
    <!-- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> -->
    
    <!-- New default platform entry -->
    <Platform Condition=" '$(Platform)' == '' ">.NET 4.5</Platform>
    

    सी। AnyCPUपरियोजना के गुणों में निर्दिष्ट अन्य रूपरेखाओं को लक्षित करने की अनुमति देने के लिए मंच जोड़ें । यह <ItemGroup>फ़ाइल में पहले टैग से ठीक पहले जोड़ा जाना चाहिए

    <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'">
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    
    .
    .
    .
    <ItemGroup>
    .
    .
    .
    
  8. अपने परिवर्तन सहेजें और *.csprojफ़ाइल बंद करें ।

  9. अपनी परियोजना को पुनः लोड करें (दायाँ क्लिक -> पुनः लोड परियोजना)।

  10. कॉन्फ़िगरेशन प्रबंधक में (बिल्ड -> कॉन्फ़िगरेशन प्रबंधक) सुनिश्चित करें कि ".NET 4.5" प्लेटफ़ॉर्म आपके प्रोजेक्ट के लिए चुना गया है।

  11. कॉन्फ़िगरेशन प्रबंधक में अभी भी, ".NET 4.5" के लिए एक नया समाधान प्लेटफ़ॉर्म बनाएं (आप इसे "किसी भी सीपीयू" को बंद कर सकते हैं) और सुनिश्चित करें कि ".NET 4.5" समाधान के लिए चुना गया है।

  12. अपनी परियोजना बनाएँ और त्रुटियों के लिए जाँच करें।

  13. निर्माण पूर्ण होने पर आप यह सत्यापित कर सकते हैं कि आप अपने स्रोत कोड में 4.5 विशिष्ट वर्ग के संदर्भ जोड़कर वास्तव में 4.5 को लक्षित कर रहे हैं:

    using System;
    using System.Text;
    
    namespace testing
    {
        using net45check = System.Reflection.ReflectionContext;
    }
    
  14. जब आप ".NET 4.5" प्लेटफॉर्म का उपयोग करके संकलन करते हैं, तो बिल्ड को सफल होना चाहिए। जब आप "किसी भी CPU" प्लेटफ़ॉर्म के तहत संकलन करते हैं, तो आपको एक कंपाइलर त्रुटि मिलनी चाहिए:

    Error 6: The type or namespace name 'ReflectionContext' does not exist in
    the namespace 'System.Reflection' (are you missing an assembly reference?)
    

3
यह क्रेजी है, भले ही यह काम किया हो, क्या यूआई तत्व जैसे रिबन डिजाइनर बिना xaml और अन्य त्रुटियों के द्रव्यमान के काम करेंगे? srsly बस उन्नयन।
बेनामी टाइप

1
डेविड वुडवर्ड के जवाब के अलावा, मैंने कहा: <OutputPath>bin\</OutputPath>पहली प्रॉपर्टी ग्रुप के लिए, जब नीचे की त्रुटि हुई: आउटपुटपाथ प्रॉपर्टी प्रोजेक्ट 'प्रोजेक्ट नाम' के लिए सेट नहीं है।
मप्रकर्क

यह वास्तव में काम करता है। लेकिन मैं अभी इसका उपयोग कर रहा हूं इसलिए मैं .NET फ्रेमवर्क 4.5.1 को स्थापित करने के बाद VS2010 पर मोल्स चला सकता हूं।
कॉनरेड क्लार्क

1
मैं यह जानने में असमर्थ था कि चरण 11 को सफलतापूर्वक कैसे किया जाए, "... एक नया समाधान प्लेटफ़ॉर्म बनाएं ...", लेकिन मैंने पाया कि चरण 11 को अनदेखा किए जाने पर निर्देश कुल मिलाकर सफल रहे।
टोनी पुलोकस

8

FYI करें, यदि आप VS2010 में इंस्टॉलर पैकेज बनाना चाहते हैं, तो दुर्भाग्यवश यह केवल .NET 4 को लक्षित करता है। इसके चारों ओर काम करने के लिए, आपको NET 4.5 को एक लॉन्च स्थिति के रूप में जोड़ना होगा।

इंस्टॉलर के लॉन्च की शर्तों में निम्नलिखित जोड़ें (राइट क्लिक करें, देखें, लॉन्च की स्थिति)।

"खोज लक्ष्य मशीन" में, राइट क्लिक करें और "रजिस्ट्री खोज जोड़ें" चुनें।

Property: REGISTRYVALUE1
RegKey: Software\Microsoft\NET Framework Setup\NDP\v4\Full
Root: vsdrrHKLM
Value: Release

नई "लॉन्च स्थिति" जोड़ें:

Condition: REGISTRYVALUE1>="#378389"
InstallUrl: http://www.microsoft.com/en-gb/download/details.aspx?id=30653
Message: Setup requires .NET Framework 4.5 to be installed.

कहाँ पे:

378389 = .NET फ्रेमवर्क 4.5

378675 = .NET फ्रेमवर्क 4.5.1 विंडोज 8.1 के साथ स्थापित किया गया

378758 = .NET फ्रेमवर्क 4.5.1 विंडोज 8, विंडोज 7 SP1 या विंडोज विस्टा SP2 पर स्थापित किया गया है

379893 = .NET फ्रेमवर्क 4.5.2

हालत का संदर्भ देखें: http://msdn.microsoft.com/en-us/library/vstudio/xxyh2e6a(v=vs.100).aspx


3

मैं VS2010 / DNFW 4.5 एकीकरण के साथ संघर्ष कर रहा हूं और आखिरकार यह काम कर रहा है। वीएस 2008 में शुरू करते हुए, असेंबली का एक कैश पेश किया गया था जिसका उपयोग विज़ुअल स्टूडियो द्वारा "संदर्भित असेंबली" के रूप में किया जाता है। VS 2010 के लिए यह फ़ाइल कैश \ Reference Assemblies \ Microsoft \ Framework.NetFramework \ v4.0 पर स्थित है। विजुअल स्टूडियो फ्रेमवर्क इंस्टॉलेशन डायरेक्टरी से इस स्थान से फ्रेमवर्क असेंबलियों को लोड करता है। जब Microsoft कहता है कि VS 2010 DNFW 4.5 का समर्थन नहीं करता है तो उनका क्या मतलब है कि DNFW 4.5 स्थापित होने पर यह निर्देशिका अपडेट नहीं होती है। एक बार जब आप अद्यतित DNFW 4.5 फ़ाइलों के साथ इस स्थान की फ़ाइलों को बदल देते हैं, तो आप पाएंगे कि VS 2010 खुशी से DNFW 4.5 के साथ कार्य करेगा।


0

दूसरी खोज से। मेरे लिए काम किया!

"आप विज़ुअल स्टूडियो 2010 का उपयोग कर सकते हैं और यह इसका समर्थन करता है, बशर्ते आपका ओएस .NET 4.5 का समर्थन करता है।

संदर्भ जोड़ने के लिए अपने समाधान पर राइट क्लिक करें (जैसा कि आप करते हैं)। जब संवाद बॉक्स दिखाता है, तो ब्राउज़ का चयन करें, फिर निम्न फ़ोल्डर में नेविगेट करें:

C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .Net Framework \ 4.5

तुम इसे वहीं पाओगे। ”


6
वाक्य में "आप इसे वहां पाएंगे", "यह" क्या है? हम उस फ़ोल्डर में कौन सी फाइल चुनते हैं? क्या उनमें से एक हमें 2010 में .net 4.5 को लक्षित करेगा?
जेफ रो

आपको नामस्थान विधानसभाएं मिलेंगी। आप जो चाहें जोड़ सकते हैं। उदाहरण के लिए, मुझे जिप फ़ाइलों के साथ काम करने के लिए एक विधि का उपयोग करने की आवश्यकता थी। इसलिए मुझे dll "System.IO.Compression.dll" मिला और इसे अपने प्रोजेक्ट में जोड़ा। तब मैं अपने कोड में स्पष्ट रूप से नामस्थान सूचीबद्ध कर सकता था और मेरी ज़रूरत के तरीकों का उपयोग कर सकता था।
हर्मीस ट्रिस्मेगिस्टस

1
यह मेरे लिए काम नहीं करता है। अगर आप अपना संदर्भ, सिस्टम, और उसके बाद .net 4.5 System.dll में ब्राउज़ करते हैं और संदर्भ के रूप में जोड़ते हैं, तो VS अभी भी 4.0 System.dll कैप्टन नॉटी का उत्तर देता है, इस पृष्ठ पर मेरे लिए काम करता है, जैसे कॉपी। System.dll C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6 से और इसे System.dll के शीर्ष पर C: \ Program Files (x86) \ Reference Assemblies के Microsoft \ \ पर ड्रॉप करें फ्रेमवर्क \ .NETFramework \ v4.0। ध्यान दें कि यह एक बुरा हैक है और इसके अनपेक्षित परिणाम हो सकते हैं।
जिनले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.