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

تنظیمات برنامه 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 به فایل کانفیگ برنامه).