একটি নেট নেট প্রকল্পে .NET 2.0 মিশ্র মোড অ্যাসেম্বলি রেফারেন্স করার জন্য কোন 'অতিরিক্ত কনফিগারেশন' প্রয়োজন?


525

আমার একটি প্রকল্প রয়েছে যার মধ্যে আমি .NET 4.0 বৈশিষ্ট্যগুলি ব্যবহার করতে চাই তবে একটি মূল প্রয়োজনীয়তা হ'ল আমি System.Data.SQLite কাঠামোটি ব্যবহার করতে পারি যা ২.X এর সাথে সংকলিত আছে is আমি এটির গ্রহণযোগ্য উত্তর হিসাবে এটি সম্ভব হওয়ার উল্লেখ দেখতে পাচ্ছি তবে বাস্তবে এটি কীভাবে অর্জন করা যায় তা আমি দেখতে পাচ্ছি না।

যখন আমি পেয়েছি 2.X বিধানসভাটি উল্লেখ করার সময় আমি আমার 4.0 প্রকল্পটি চালিয়ে যাচ্ছি:

মিশ্র মোড সমাবেশটি রানটাইমের সংস্করণ 'v2.0.50727' এর বিপরীতে নির্মিত এবং অতিরিক্ত কনফিগারেশন তথ্য ছাড়া 4.0 রানটাইমে লোড করা যায় না।

কোন "অতিরিক্ত কনফিগারেশন" প্রয়োজনীয়?



চেষ্টা করে দেখুন! ধন্যবাদ http://social.msdn.microsoft.com/forums/en/clr/thread/58271e39-beca-49ac-90f9-e116fa3dd3c0 ধন্যবাদ। আনন্দ কর.

গুরুত্বপূর্ণ: ত্রুটি হিসাবে ত্রুটি কলাম "ফাইল" যদি সেটা হয় SGEN, তাহলে ফিক্স চাহিদা একটি ফাইলে হতে sgen.exe.configপাশে sgen.exe। উদাহরণস্বরূপ, ভিএস 2015 এর জন্য তৈরি করুন C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\sgen.exe.config। উত্স: এসজিইএন মিশ্র মোড সমাবেশ ন্যূনতম ফাইল সামগ্রী:<configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
টুলমেকারস্টেভ

উত্তর:


685

একটি সিএলআর ২.০ মিশ্র মোড অ্যাসেম্বলি ব্যবহার করার জন্য , আপনাকে অন্তর্ভুক্ত করার জন্য আপনার অ্যাপ.কনফিগ ফাইলটি পরিবর্তন করতে হবে:

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

মূলটি হ'ল useLegacyV2RuntimeActivationPolicyপতাকা। এর ফলে সিএলআর আপনার মিশ্র মোড অ্যাসেমব্লিকে লোড করতে সর্বশেষতম সংস্করণ (4.0) ব্যবহার করতে পারে। এটি ছাড়া এটি কাজ করবে না।

মনে রাখবেন এটি কেবল মিশ্র মোড (সি ++ / সিএলআই) সমাবেশগুলির জন্য গুরুত্বপূর্ণ। আপনি এটিকে নির্দিষ্ট না করেই সমস্ত পরিচালিত সিএলআর 2 অ্যাসেম্বলি লোড করতে পারেন app.config


@ রেড আমি আপনার পরামর্শটি চেষ্টা করেছি, তবে ব্যতিক্রমটি এখনও পপ আপ হয়। আমি অ্যাপকনফাইগটি ডাবল-চেক করেছি যা আমার EXE ফোল্ডারে অনুলিপি করা হয়েছে এবং এটি এখনও কার্যকর হয় না। লগ 4 নেট ব্যবহার করার সময় এটি আসে। Log4net এখানে ছাড়া: আমি এই ত্রুটি পুনরায় সম্পর্কে কিছু খুঁজে পাচ্ছি না stackoverflow.com/questions/1866735/log4net-and-net-4-0 , কিন্তু এটা অনেক না বলা আছে। আমি কীভাবে আমার বিশেষ সমস্যা সম্পর্কে আরও তথ্য পেতে পারি সে সম্পর্কে কোনও ধারণা?
ডেভ

@ ডেভ: এটি আপনাকে পরামর্শ দিচ্ছে যে আপনি কেবল লগ 4 নেট এর একটি নেট 4 নেটিভ সংস্করণ ব্যবহার করতে পারেন - এটি সেরা বিকল্প হিসাবে মনে হচ্ছে। .NET 4 সংস্করণ যদি থাকে তবে এটি ব্যবহার করুন ...
রিড কোপসি

@ রেডের মধ্যে একটি নেই, এবং আমি আসলে উত্তরটির অর্থ ব্যাখ্যা করেছি যে আপনাকে নিজেরাই লগ 4 নেট কম্পাইল করতে হবে। আমি অনুমান করি যে আমি এটি করতে পারি, তবে আমি কেবল তাদের পূর্বনির্ধারিত বাইনারি নিয়েছি এবং এটি আমার প্রকল্প থেকে রেফারেন্স করব। আমি এটি আরও কিছু তাকান। তবে আপনি কি ভাবতে পারেন কেন অ্যাপ.config পরিবর্তন করা কার্যকর হয় না? আমি ভেবেছিলাম সম্ভবত আমাকে প্রোগ্রামের নাম.এক্সে কোডফিগ ব্যবহার করতে হবে, তবে আমি এটিও চেষ্টা করেছিলাম এবং এটি কার্যকর হয়নি। আমার সীমিত অভিজ্ঞতায়, ফাইলের নাম একই কাজ করে।
ডেভ

19
NUnit এর কনফিগারেশনের ফাইলটিতে এই লাইনটি স্থাপন করতে আমাকে কী সাহায্য করেছিল : <স্টার্টআপ ইউজলিজেসিভি 2 রুনটাইম অ্যাক্টিভেশনপলিশি = "সত্য"> <সমর্থিত রুনটাইম সংস্করণ = "v4.0" /> <প্রয়োজনীয় রুনটাইম সংস্করণ = "ভি 4.0.20506" /> </startup>
ফিলিপ জাওয়াদা

76
মাইক্রোসফ্টের ব্যতিক্রম সংলাপে একটি বোতাম তৈরি করা উচিত: "
স্ট্যাকওভারফ্লোতে

35

.NET ফ্রেমওয়ার্ক বিকাশকারী কেন্দ্রে এই ফোরাম পোস্ট । এটি কিছুটা অন্তর্দৃষ্টি দিতে পারে।

(অ্যাপ্লিকেশনটির কনফিগারেশনের ফাইলটিতে যুক্ত করুন))

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

2
এই অ্যাপ্লিকেশন কনফিগারেশনটি ন্যান্ট বিল্ডের জন্য কীভাবে ব্যবহার করা উচিত?
সাগর

14

আপনি যে ফ্রেমওয়ার্কটির লক্ষ্য নির্ধারণ করছেন তার কোনও সংস্করণ অনুসারে সঠিক স্ট্রিংটি পেতে আপনি এখানে দেখতে চাইতে পারেন:

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>

11

একবার আপনি app.config ফাইল সেট করে দিলে ভিজ্যুয়াল স্টুডিও App.exe.config নামে বিন ফোল্ডারে একটি অনুলিপি তৈরি করবে । স্থাপনার সময় অ্যাপ্লিকেশন ডিরেক্টরিতে এটি অনুলিপি করুন। সুস্পষ্ট মনে হচ্ছে তবে আশ্চর্যরূপে অনেক লোক এই পদক্ষেপটি মিস করে। উইনফর্মস বিকাশকারীরা ফাইল কনফিগার করতে ব্যবহার করেন না :)।


আরেকটি উপায় হ'ল অ্যাপ.config মুছে ফেলা এবং তারপরে প্রকল্প-> অ্যাড-> নতুন আইটেম থেকে একটি নতুন যুক্ত করুন এবং সাধারণ-> অ্যাপ্লিকেশন কনফিগারেশন ফাইল (যা কেবল অ্যাপকনফিগ নামে একটি পাঠ্য ফাইল তৈরি করার মতো নয়) বেছে নিন
স্মার্কিংম্যান

8

2.0 এবং 4.0 এসেম্বলিকে একসাথে ব্যবহার করা মোটামুটি সরাসরি নয় isn't

App.config- এ সমর্থিত ফ্রেমওয়ার্ক ঘোষণার অর্ডার আসলে মিশ্র মোড নিক্ষেপ করা ব্যতিক্রমের উপর প্রভাব ফেলে। আপনি ঘোষণার অর্ডারটি ফ্লিপ করলে আপনি মিশ্র মোড ত্রুটি পাবেন। এটি এই উত্তরের উদ্দেশ্য।

সুতরাং আপনি যদি কোনও উইন্ডোজ ফর্ম অ্যাপ্লিকেশনটিতে ত্রুটিটি পান তবে বেশিরভাগ উইন্ডোজ ফর্ম অ্যাপ্লিকেশন ব্যবহার করে দেখুন।

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

বা যদি প্রকল্পটি উইন্ডোজ ফর্ম না হয়। কোনও ওয়েব প্রকল্পে এটি ওয়েবকনফিগ ফাইলটিতে যুক্ত করুন।

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

7

"UseLegacyV2Runটাইম অ্যাক্টিভেশনপলিসি" বৈশিষ্ট্য সেট সহ " স্টার্টআপ" উপাদান যুক্ত করে বিষয়টি সমাধান করতে সক্ষম হয়েছিল ।

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

তবে এটি কার্যকর হওয়ার জন্য এটিকে অ্যাপকনফাইজে কনফিগারেশন ট্যাগের প্রথম শিশু উপাদান হিসাবে স্থাপন করতে হয়েছিল

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

1
একজনের সাথে version="v2.0"কি হয়েছে?
স্যামবি 4'15

1
বিল্ড নম্বর 2.0 এর জন্য প্রয়োজনীয় তবে 4.0 এর জন্য নয় তাই শীর্ষ সংস্করণটি ভুল। নীচে সঠিক।
আইকিডাইম

5

উপরেরটি আমার পক্ষে কাজ করে নি (আমি একটি ওয়েব অ্যাপে কাজ করছি) - তবে এটি ...

ফোল্ডারে sgen.exe.config ফাইলটি সম্পাদনা করুন (আমাকে প্রথমে একটি তৈরি করতে হয়েছিল); সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট এসডিকেস \ উইন্ডোজ \ v8.0A \ বিন \ নেটফেক্স Tools.০ সরঞ্জাম (ভি .0.০ ফোল্ডারের মধ্যে একটিও রয়েছে, তবে আমার সেটিকে পরিবর্তন করার দরকার নেই, আমি VS2012 ব্যবহার করছি)

এক্সএমএলের কন্টেন্টগুলি দেখতে এটির মতো হওয়া উচিত (পূর্ববর্তী উত্তরে একই)

<?xml version ="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
    </startup>
</configuration>

5

আপনি যদি কোনও ওয়েব পরিষেবায় কাজ করছেন এবং v2.0 সমাবেশটি একটি নির্ভরতা যা WcfSvcHost.exe দ্বারা লোড করা হয়েছে তবে আপনাকে অবশ্যই এতে অন্তর্ভুক্ত করতে হবে

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

ইন .. \ মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও 10.0 \ প্রচলিত 7 \ আইডিই \ WcfSvcHost.exe.config ফাইল

এইভাবে, ভিজুয়াল স্টুডিও রানটাইমের সময় লোডারটির মাধ্যমে সঠিক তথ্য পাঠাতে সক্ষম হবে।


4

যখন আমরা পরিবর্তিত আমি এই বিষয় গাড়ীতে আঘাত ভিসুয়াল স্টুডিও 2015 । উপরের উত্তরগুলির কোনওটিই আমাদের পক্ষে কার্যকর হয়নি। শেষ পর্যন্ত আমরা মেশিনে সমস্ত sgen.exe এক্সিকিউটেবলের সাথে নিম্নলিখিত কনফিগারেশন ফাইলটি যুক্ত করে এটি কাজ করে চলেছি

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

বিশেষত এই অবস্থানে, এমনকি যখন আমরা লক্ষ্য করেছিলাম। নেট 4.0:

সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v10.0A \ বিন \ নেটফএক্স ৪.6 সরঞ্জাম


আপনি আরো নির্দিষ্ট হতে পারে? আপনি কি বোঝাতে চাইছেন যে আপনি বিদ্যমান সমস্ত * .config ফাইলগুলিতে এই কনফিগার বিকল্পগুলি যুক্ত করেছেন বা আপনি sgen.exe এর জন্য একটি .config ফাইল তৈরি করেছেন?
অ্যাডাম স্পাইসার

আমার জন্য ভিজুয়াল স্টুডিও 2015 টেস্ট প্রকল্পগুলির সাথে আমি এই সমস্যাটি নিয়ে আসছিলাম। এই পোস্টটি আমাকে সাহায্য করেছে। devbraindump.wordpress.com/2015/07/29/hello-world
অ্যাডাম

1
@ অ্যাডামস্পাইসার আমরা এটি সমস্ত sgen.exe এর সমস্ত .config ফাইলগুলিতে যুক্ত করেছি। যদি কারও অস্তিত্ব না থাকে, আমরা একটি তৈরি করেছি।
সিএমডি চালান

3

আমি এই কনফিগারটি ব্যবহার করেছি:

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

আমার জন্য কাজ করেছেন


3
v2.0.50727 হওয়া উচিত, ভি 2.0 বিল্ড নম্বরটির জন্য প্রয়োজন, তবে
ভি 4.0

1

ভিজ্যুয়াল স্টুডিও 2015-এ আপগ্রেড করার সময় আমার এই সমস্যা হয়েছিল এবং এখানে পোস্ট করা সমাধানগুলির মধ্যে কোনওরই কোনও পার্থক্য হয়নি, যদিও কনফিগারেশনটি সঠিকভাবে পরিবর্তনের জন্য অবস্থানটি নয়। আমি এই কনফিগারেশন যোগ করে এই সমস্যাটি স্থির করেছি:

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

প্রতি: সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও 14.0 \ কমন 7 \ আইডিই \ প্রচলিত এক্সটেনশনগুলি \ মাইক্রোসফ্ট \ টেস্ট উইন্ডো \ টি.ই.প্রসেসহোস্ট.ম্যানেজড.এক্সে.কনফিগ

তারপরে ভিজ্যুয়াল স্টুডিও পুনরায় চালু করুন।


0

গুগল করার 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প্রকল্পের রেফারেন্সগুলি এবং তার পরে download the latest version of DLL'sসংশ্লিষ্ট ওয়েবসাইট থেকে পেতে পারেন এবং সর্বশেষ সংস্করণ ডিএলএল রেফারেন্সের রেফারেন্স যুক্ত করতে পারেন তবে এটি কার্যকর হবে।


1
এটি ঠিক করবে কারণ আপনি ধরে নিচ্ছেন যে ডিএলএল এর সর্বশেষ সংস্করণটি .NET- র একটি নতুন সংস্করণের বিরুদ্ধে সংকলিত হয়েছে?
লুকাস

0

আমি এই একই ত্রুটিটি অনুভব করছিলাম এবং আমার সমাধানের বিভিন্ন কনফিগার ফাইলগুলিতে প্রস্তাবিত স্টার্টআপ স্টেটমেন্টগুলি যুক্ত করে ফ্রেমওয়ার্কের অমিলকে আলাদা করার চেষ্টা করে চিরতরে ব্যয় করেছি। কিছুই কাজ হয়নি। আমি আমার এক্সএমএল স্কিমায় স্টার্টআপের তথ্যও যুক্ত করেছি । এটিও সাহায্য করেনি। সমস্যাটি সৃষ্টি করে এমন প্রকৃত ফাইলটি দেখলে (যা কেবল এটি "সরানো বা মুছে ফেলা" বলে প্রকাশিত হয়েছিল) এটি প্রকৃতপক্ষে লাইসেন্স কম্পাইলার (এলসি)।

আপত্তিকর লাইসেন্সস.লিক্স ফাইল মোছার ফলে সমস্যাটি স্থির হয়েছে বলে মনে হচ্ছে।


0

ভিএস ২০০৮ থেকে ভিএস ২০১০ তে কিছু কোড স্থানান্তর করার সময় আমি একই ধরণের সমস্যার মুখোমুখি হয়েছিলাম App.config ফাইলে পরিবর্তন করা আমার জন্য সমস্যাটি সমাধান করেছে।

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

0

এই স্থানে নিম্নলিখিত যুক্ত করুন সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v7.0A \ বিন \ নেটফেক্স 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>

এটি করার ফলে সমস্যার সমাধান হয়েছে


0

আমি ব্যবহার করি

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

এটি কাজ করে তবে ডি </configuration>ট্যাগের ঠিক আগে অন্যথায় স্টার্টআপ ট্যাগটি সঠিকভাবে কাজ করে না


-1

ক্লাস লাইব্রেরিতে আমারও এই সমস্যাটি ছিল, যদি কারও কাছে আপনার সমস্যাটি থাকে তবে ক্লাসের পাঠাগারটি আপনার মূল অ্যাপ্লিকেশনটিতে যুক্ত হয়। শুধু যোগ কর

<startup useLegacyV2RuntimeActivationPolicy="true">

আপনার কাছে মূল অ্যাপ্লিকেশন যা ক্লাস লাইব্রেরি দ্বারা বাছাই করা হবে।


এটি একটি অসম্পূর্ণ সমাধান। কনফিগারেশনে থাকা নামগুলি সংবেদনশীল এবং আপনি কোনও মার্কিনকে ভুলে গিয়েছেন
চক ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.