عنوان:

‫حل مشکل ویژوال استودیو در سیستمهایی که از رزولوشن (DPI) بالا و مانیتور های 4K استفاده می کنند


نویسنده: امیر قراجه داغی
تاریخ: ۱۳۹۵/۰۳/۳۱ ۹:۱۰
آدرس: www.dntips.ir
مدتی بود بر روی یک پروژه‌ی اتوماسیون اداری در VB.NET کار می‌کردیم. پروژه‌ی ما بر روی سیستمی با رزولوشن بالا  2160 * 3840 و مانیتور 4K قرار داشت. بعد از اینکه لایه بندی و کد‌های نرم افزار نوشته شد، نوبت به طراحی اینترفیس پروژه رسید. با مشکلی عجیب روبرو شدیم، به این صورت که در قسمت طراحی ویژوال استودیو، منوها، دکمه‌ها و ... بیش از حد معمول کوچک و به هم ریخته بود. ولی زمانیکه پروژه اجرا می‌شد، نسبت به طراحی که در سمت وِیژوال استودیو انجام داده بودیم، دکمه‌ها  بزرگتر و منوها بزرگتر و شکسته شده بودند. در حقیقت، سمت طراحی و سمت اجرای پروژه، هم خوانی نداشتند. در حالیکه ما قبلا بر روی مانیتور‌های HD و رزولوشن‌ها HD، هیچ مشکلی در طراحی و اجرای پروژه نداشتیم و هم خوانی لازم را باهم داشتند. بعد از جستجوهای متعدد، به این مطلب پی بردیم که این مشکل بیشتر برنامه نویسانی هست که از سیستم‌هایی با رزولوشن بالا و مانیتور‌های 4K استفاده می‌کنند و پاسخ مناسبی به کاربران داده نشده است. با تست راه‌های متعدد و جستجوهای پی در پی، به پاسخ قطعی رسیدیم و خواستم این مطلب  را به صورت مقاله‌ای کوتاه، با شما به اشتراک بگذارم.
مشخصات سیستمی که مشکل زیر را دارد : ویندوز 10  نسخه  Enterprise  x64 و ویژوال استودیو 2015 نسخه  Enterprise 
نمونه اسکرین شات گرفته شده که مشکل یکی از کاربران ایرانی بود و برای حل مشکل خود، اسکرین شات صفحه نمایش خود را قرار داده بود و به پاسخ قطعی نرسیده بود:

  اگر ملاحظه کنید، تصویر سمت راست، از پروژه‌ای بر روی VirtualBox با رزولوشن و DPI پایین در دیزاین ویژوال استودیو و تصویر سمت چپ از همان پروژه در دیزاین ویژوال استودیو با رزولوشن بالا و مانیتور 4K تهیه شده‌است و ملاحظه می‌کنید که پروژه به هم ریخته است و این مشکل در خیلی از برنامه‌های دیگر نیز موجود می‌باشد؛ مانند SQL SERVER و ...
 نمونه اسکرین شات گرفته شده از بعضی پنجره‌های SQL server 

حال برای رفع این مشکل چه باید کرد؟ به صورت زیر عمل می‌کنیم  

  1. به مسیر زیر در رجیستری مراجعه می‌کنیم :    
HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > SideBySide
 و رایت کلیک کرده  NEW > DWORD (32 bit) Value  انتخاب کرده و نام را PreferExternalManifest وارد کرده و Value را بر روی 1 قرار می‌دهیم .

     

2. نرم افزار Resourcehacke را دانلود کرده و آن‌را اجرا کرده و از قسمت File، بر روی Open کلیک کرده و مسیر ویژوال استودیو را به نرم افزار داده و  Ok را انتخاب می‌کنیم . 
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE


بعد از بارگذاری اطلاعات ویژوال استودیو در نرم افزار  Resourcehacke، از سمت چپ بر روی Manifest و 1:1033 کلیک کرده و dpiAware را بر روی False قرار می‌دهیم .
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <application xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <windowsSettings> 
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">False</dpiAware> 
    </windowsSettings> 
  </application> 
</assembly>

ودر آخر سیستم را ریستارت کرده و با همان رزولوشن بالا و مانیتور 4K، ویژوال استودیو را اجرا می‌کنیم و ملاحظه میکنیم که مشکل خاصی وجود ندارد و سمت دیزاین با سمت اجرای پروژه همخوانی دارد و همسان می‌باشد.

نظرات

  • حسین تهی در ۱۳۹۵/۰۶/۲۰ ۱۰:۴۴
    سلام مهندس وقتی با برنامه ریسورس هکر تنظیمات رو برای ویژوال استادیو انجام میدم وقتی میخوام از برنامه خارج شم میگه باید تنظیمات رو ذخیره کنید وقتی میخوام این کار رو انجام بدم از طرف ویژوال استادیو با خطا رو به رو میشم که نمیتوانید این کاررو انجام دهید اگر میشود لطفا راهنمایی کنید .با تشکر
    • امیر قراجه داغی در ۱۳۹۵/۰۸/۱۷ ۱۷:۵
      با سلام و عرض پوزش ! 
      حتما مطمئن باشید که ویژوال استودیو در حال اجرا نباشد .
      • حسین تهی در ۱۳۹۵/۰۸/۲۷ ۱۶:۵۵

        سلام مهندس.من طبق دستورات شما عمل کردم در عینی که ویژوال استادیو هم کاملا بسته بود. من از این جا به بعد برام مشکل پیش میاد. وقتی که برنامه ریسورس هکر را باز میکنم و با این ادرس C : \Program Files ( x86 ) \Microsoft Visual Studio 14.0 \Common7\IDE ویژوال استادیو رو باز میکنم و آن قسمتی که گفتید در عکس false کنید را درست کردم.حالا از این جا به بعد یکم درست توضیح نداید . من وقتی که میخواهم برنامه ریسورس را ببندم این پیغام میاد Changes have been made to this scrip... Do you wish to Compile it?  بعد من گزینه yes را کلید میکنم و برنامه بسته نمیشه و هنگامی که میخوام باز برنامه ریسورس رو ببندم این پیغام رو میده Resources have been Modified, do you wish to save changes? که بازهم گزینه  yes را انتخاب میکنم پنجره باز میشه و باز برنامه ویژوال استادیو رو میخواد وقتی که برنامه رو انتخاب میکنم که تغییرات روی آن اعمال بشه این پیغام خطا رو میده Cannot create file C : \Program Files ( x86 ) \Microsoft Visual Studio 14.0 \Common7\IDE\devenv.exe".Access is denied. ودیگه این تنظیمات رو اعمال نمیکند. ممنون میشم اگر این مشکل رو حل کنید

        با تشکر

        • محسن خان در ۱۳۹۵/۰۸/۲۷ ۱۸:۵۰
          مسیر program files در ویندوزهای جدید، یک مسیر محافظت شده‌است و برای اعمال تغییرات در آن نیاز به دسترسی ادمین دارید. یا برنامه را با دسترسی ادمین (run as admin) اجرا کنید و یا فایل exe را جای دیگری کپی کنید، تغییرات را اعمال کنید و بعد بر روی فایل موجود کپی کنید (که در اینجا ابتدا دسترسی مدیریتی را باید تائید کنید تا امکان کپی را پیدا کنید).
          • حسین تهی در ۱۳۹۵/۰۸/۲۸ ۱۱:۴۸
            خیلی متشکرم؛ کارم با روش دومی که گفتید راه افتاد.
  • وحید نصیری در ۱۳۹۶/۰۱/۱۶ ۱:۲۶
  • علیرضا سیف در ۱۳۹۹/۰۵/۲۵ ۱۸:۱۳
    سلام
    در مورد نرم افزار‌های تحت وب چگونه می‌توان از بروز این اشکالات در سیستم هایی با رزولوشن متفاوت جلوگیری کرد؟