c# framework एक.NET 4.0 प्रोजेक्ट में.NET 2.0 मिश्रित मोड असेंबली को संदर्भित करने के लिए 'अतिरिक्त कॉन्फ़िगरेशन' आवश्यक है?




net fra framework 4.5 download (13)

सीएलआर 2.0 मिश्रित मोड असेंबली का उपयोग करने के लिए, आपको अपनी ऐप को कॉन्फ़िगर करने के लिए फ़ाइल को संशोधित करने की आवश्यकता है:

<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>

कुंजी उपयोग है useLegacyV2RuntimeActivationPolicy ध्वज। इससे सीएलआर आपके मिश्रित मोड असेंबली को लोड करने के लिए नवीनतम संस्करण (4.0) का उपयोग करने का कारण बनता है। इसके बिना, यह काम नहीं करेगा।

ध्यान दें कि यह केवल मिश्रित मोड (सी ++ / सीएलआई) विधानसभाओं के लिए महत्वपूर्ण है। आप app.config में इसे निर्दिष्ट किए बिना सभी प्रबंधित सीएलआर 2 असेंबली लोड कर सकते हैं।

मेरे पास एक प्रोजेक्ट है जिसमें मैं .NET 4.0 सुविधाओं में से कुछ का उपयोग करना चाहता हूं लेकिन मूल आवश्यकता यह है कि मैं System.Data.SQLite फ्रेमवर्क का उपयोग कर सकता हूं जो 2.X के विरुद्ध संकलित है। मुझे यह संभव है कि इस तरह के स्वीकार्य उत्तर के रूप में उल्लेख किया जा रहा है लेकिन मुझे नहीं लगता कि वास्तव में इसे कैसे प्राप्त किया जाए।

जब मैं 2.X असेंबली को संदर्भित करते समय बस अपने 4.0 प्रोजेक्ट को आजमाकर चलाता हूं तो मुझे मिलता है:

मिश्रित मोड असेंबली रनटाइम के संस्करण 'v2.0.50727' के विरुद्ध बनाई गई है और बिना अतिरिक्त कॉन्फ़िगरेशन जानकारी के 4.0 रनटाइम में लोड नहीं की जा सकती है।

क्या "अतिरिक्त विन्यास" आवश्यक है?


"UseLegacyV2RuntimeActivationPolicy" विशेषता सेट के साथ " स्टार्टअप" तत्व जोड़कर समस्या को हल करने में सक्षम था।

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
</startup>

लेकिन इसे प्रभावी होने के लिए App.config में कॉन्फ़िगरेशन टैग के पहले बच्चे तत्व के रूप में रखना था

<?xml version="1.0"?>
  <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
      <supportedRuntime version="v2.0.50727"/>
    </startup>
  ......
....

इस स्थान पर निम्न जोड़ें C: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 उपकरण \ x64 फ़ाइल नाम: sgen.exe.config (यदि आपको यह फ़ाइल नहीं मिलती है, तो बनाएं और जोड़ें)

 <?xml version ="1.0"?>

<configuration>
 <runtime>        
        <generatePublisherEvidence enabled="false"/>    
    </runtime>

    <startup useLegacyV2RuntimeActivationPolicy="true">

                <supportedRuntime version="v4.0" />

    </startup>    

</configuration>

ऐसा करने से इस मुद्दे को हल किया गया


मुझे गुगलिंग के 3-4 घंटों के बाद इस के आसपास एक रास्ता मिला। मैंने निम्नलिखित जोड़ा है

<startup selegacyv2runtimeactivationpolicy="true">
  <supportedruntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>

यदि यह आपकी समस्या का समाधान नहीं करता है -> परियोजना संदर्भों में Right Click on DLL जहां आपको त्रुटि मिल रही है -> Select Properties -> Check the Run-time Version -> यदि यह v2.0.50727 तो हम जानते हैं समस्या। समस्या यह है: - आपके पास 2.0 Version of respective DLL. समाधान है: - आप परियोजना संदर्भों से delete the respective DLL को delete the respective DLL सकते हैं और फिर संबंधित वेबसाइट से download the latest version of DLL's संदर्भ का संदर्भ जोड़ सकते हैं तो यह काम करेगा।


.NET Framework डेवलपर केंद्र पर यह http://social.msdn.microsoft.com/Forums/en/clr/thread/58271e39-beca-49ac-90f9-e116fa3dd3c0 । यह कुछ अंतर्दृष्टि प्रदान कर सकता है।

(ऐप की कॉन्फ़िगरेशन फ़ाइल में जोड़ें।)

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

जब हम विजुअल स्टूडियो 2015 में बदल गए तो मैं इस मुद्दे में भाग गया। उपर्युक्त उत्तरों में से कोई भी हमारे लिए काम नहीं करता है। अंत में हम मशीन पर सभी sgen.exe निष्पादन योग्य को निम्न कॉन्फ़िगरेशन फ़ाइल जोड़कर काम कर रहे हैं

<?xml version ="1.0"?>
    <configuration>
        <startup useLegacyV2RuntimeActivationPolicy="true">
            <supportedRuntime version="v4.0" />
        </startup>    
</configuration>

विशेष रूप से इस स्थान पर, जब भी हम लक्ष्यीकरण कर रहे थे .NET 4.0:

सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट एसडीके \ विंडोज \ v10.0A \ bin \ NETFX 4.6 टूल्स


मैंने इस कॉन्फ़िगरेशन का उपयोग किया:

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

मेरे लिए काम किया


एक साथ 2.0 और 4.0 असेंबली का उपयोग करना काफी सीधे नहीं है।

App.config में समर्थित ढांचे की घोषणाओं का ऑर्डर वास्तव में मिश्रित मोड को अपनाने के अपवाद पर प्रभाव डालता है। यदि आप घोषणा आदेश को फ़्लिप करते हैं तो आपको मिश्रित मोड त्रुटि मिल जाएगी। यह इस उत्तर का उद्देश्य है।

इसलिए यदि आपको Windows फॉर्म ऐप में त्रुटि मिलती है, तो इसे आज़माएं, ज्यादातर विंडोज़ फॉर्म ऐप।

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
    <supportedRuntime version="v2.0.50727"></supportedRuntime>
  </startup>

या अगर परियोजना विंडोज फॉर्म नहीं है। एक वेब प्रोजेक्ट में इसे web.config फ़ाइल में जोड़ें।

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727"></supportedRuntime>
  </startup>

वीएस 2008 से वीएस 2010 तक कुछ कोड माइग्रेट करते समय मुझे एक ही समस्या का सामना करना पड़ रहा था। App.config फ़ाइल में परिवर्तन करने से मेरे लिए समस्या हल हो गई।

<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"
         sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
</configuration>

विजुअल स्टूडियो 2015 में अपग्रेड करते समय मुझे यह समस्या थी और यहां पोस्ट किए गए समाधानों में से कोई भी कोई फर्क नहीं पड़ता, हालांकि कॉन्फ़िगरेशन सही है क्योंकि परिवर्तन का स्थान नहीं है। मैंने इस कॉन्फ़िगरेशन को जोड़कर इस समस्या को ठीक किया है:

<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>

प्रति: सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config

फिर विजुअल स्टूडियो को पुनरारंभ किया।


आपके द्वारा लक्षित ढांचे के किस संस्करण के आधार पर, आप सही स्ट्रिंग प्राप्त करने के लिए यहां देखना चाह सकते हैं:

http://msdn.microsoft.com/en-us/library/ee517334.aspx

मैंने यह पता लगाने की कोशिश कर घंटों बर्बाद कर दिया कि मेरी रिलीज लक्ष्यीकरण क्यों नेट 4.0 क्लाइंट को पूर्ण संस्करण की आवश्यकता है। मैंने अंत में इसका इस्तेमाल किया:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0.30319" 
               sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>

यदि आप किसी वेब सेवा में काम कर रहे हैं और v2.0 असेंबली एक निर्भरता है जिसे WcfSvcHost.exe द्वारा लोड किया गया है तो आपको अवश्य शामिल करना होगा

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

में .. \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ WcfSvcHost.exe.config फ़ाइल

इस तरह, विजुअल स्टूडियो लोडर के माध्यम से रनटाइम पर सही जानकारी भेजने में सक्षम होगा।


मैं एक ही त्रुटि का अनुभव कर रहा था, और मेरे समाधान में विभिन्न कॉन्फ़िगरेशन फ़ाइलों को सुझाए गए स्टार्टअप कथन को हमेशा के लिए बिताया, फ्रेमवर्क विसंगति को अलग करने का प्रयास किया। कुछ भी काम नहीं किया। मैंने अपने एक्सएमएल स्कीमा में स्टार्टअप जानकारी भी जोड़ा। इससे कोई मदद नहीं मिली। समस्या उत्पन्न करने वाली वास्तविक फ़ाइल को देखते हुए (जो केवल यह कहता है कि यह "स्थानांतरित या हटाया गया था") पता चला कि यह वास्तव में लाइसेंस कंपाइलर (एलसी) था।

अपमानजनक लाइसेंस को हटा देना .licx फ़ाइल ने समस्या को ठीक किया है।







system.data.sqlite