عنوان:

‫استفاده از اسمبلی‌های دات نت 2 در یک پروژه دات نت 4


نویسنده: وحید نصیری
تاریخ: ۱۳۸۹/۰۸/۱۰ ۱۴:۴۰:۰۰
آدرس: www.dntips.ir

تنظیمات برنامه BloggerToChm را به دات نت 4 تغییر دادم و بدون مشکل کامپایل شد. اما حین اجرا بلافاصله با خطای زیر برنامه اجرا نمی‌شد:

Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
مشکل هم از اسمبلی‌های مرتبط با SQLite است که هنوز برای دات نت 4 کامپایل نشده‌اند. برای رفع این مشکل باید تغییر زیر را (تنظیم گزینه useLegacyV2RuntimeActivationPolicy) به فایل app.config برنامه اضافه کرد:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
برای برنامه‌های ASP.NET نیز به همین صورت است. در آنجا این تغییرات باید به Web.Config اضافه شوند.

نظرات

  • مهمان در ۱۳۸۹/۰۸/۱۱ ۰۰:۱۵:۳۷
    سلام جناب نصیری.
    با اجازه بنده می خواهم برای بلاگفا همچنین کاری انجام بدهم.
    در مور تبدیلش به CHM می خواستم راهنمایی بگیرم
    با کسب اجازه از ایده شما
    متشکرم
  • وحید نصیری در ۱۳۸۹/۰۸/۱۱ ۰۰:۲۷:۵۸
    در مورد CHM پیشتر مطلب نوشتم:(+)
    برای استفاده از آن در یک برنامه مستقل، تمام این‌کارها از طریق خط فرمان این برنامه (html help workshop) هم قابل انجام است. فقط فایل‌های پروژه و ایندکس و غیره آن‌را برنامه شما باید تولید کرده و به صورت پارامتر خط فرمان به آن ارسال کند.
  • مهمان در ۱۳۸۹/۰۸/۱۱ ۰۰:۳۳:۰۲
    سلام استاد نصیری
    واقعا ممنونم.
    چند ماه پیش به خاطر استفاده از یک اسمبلی که با فریم ورک 2 کامپایل شده بود بشدت دنبال این موضوع بودم ولی به نتیجه ای نرسیدم(تصورم این بود که اسمبلی مجددا باید برای ورژن 4 کامپایل بشه).

    ممنون از زحمات شما
  • وحید نصیری در ۱۳۸۹/۰۸/۱۱ ۱۶:۴۹:۳۲
    جهت تکمیل بحث در مورد mixed-mode assemblies به این آدرس مراجعه کنید : (+)
    به عبارتی اسمبلی‌هایی هستند که حاوی کدهای managed و unmanaged می‌باشند مانند اسمبلی ساخته شده برای SQLite که هم کدهای دات نتی دارند و هم کدهای اصل مرتبط با خود SQLite که با زبان C نوشته شده.
  • وحید نصیری در ۱۳۸۹/۰۹/۲۶ ۱۲:۰۱:۱۱
    - یک نکته‌ی دیگر:
    اگر حین کار با NHibernate و SQLite در یک برنامه‌ی دات نت 4 به خطای "Could not create the driver from NHibernate.Driver.SQLite20Driver" برخوردید، راه حل همان مورد فوق است (اضافه کردن useLegacyV2RuntimeActivationPolicy به فایل کانفیگ برنامه).