خطا :
در هنگام Build کردن پروزه ممکن است که کامپایلر ویژوال بیسیک دات نت ناگهان از کار افتاده و شما پیغام خطای زیر را دریافت نمایید :
کد:
Visual Basic .NET compiler is unable to recover from the following error: System Error &Hc0000005& (Visual Basic internal compiler error)
Save your work and restart Visual Studio .NET.
علت بروز خطا :
این مشکل (BUG) زمانی رخ میدهد که شما از کلمه کلیدی DirectCast در جهت پاس کردن یک آرگومان به سازنده ی یک Atribute استفاده نمایید . به طور مثال اگر شما در یکی از فایلهای پروژه خود از کد زیر استفاده نمایید ، خطای فوق رخ میدهد :
کد:
<DefaultValueAttribute(DirectCast(Nothing, String))>
چگونگی رفع خطا :
برای رفع این مشکل ، مراحل زیر را دنبال نمایید :
1 – پس از اینکه پیغام خطا را دریافت کردید ، از VS.Net خارج شوید .
2 – VS.Net را مجددا اجرا نمایید .
3 – در کد خود به جای استفاده از کلمه کلیدی DirectCast ، از کلمه کلیدی CType استفاده نمایید .
به طور مثال ممکن است که پروژه شما حاوی فایلی باشد که کد زیر در آن وجود دارد :
کد:
<DefaultValueAttribute(DirectCast(Nothing, String))>
در اینصورت کد زیر را جایگزین کد فوق نمایید :
کد:
<DefaultValueAttribute(CType(Nothing, String))>
کد جدید از کلمه کلیدی CType به جای DirectCast استفاده میکند .
چگونگی تولید دوباره خطا:
در جهت تولید دوباره این مشکل مراحل زیر را دنبال نمایید .
1 – VS.Net را اجرا نمایید .
2 – یک پروژه کنسول جدید ایجاد نمایید .( به طور پیش فرض فایل Module1.vb ایجاد خواهد شد.)
3 – در فایل Module1.vb کد زیر را بیابید :
4 – کد زیر را قبل از کدی که در مرحله 3 آن را یافتید وارد نمایید :
کد:
Imports System.ComponentModel
5 – در فایل Module1.vb کد زیر را پیدا نمایید :
6 – کد زیر را بعد از کدی که در مرحله قبل پیدا کردید قرار دهید :
کد:
<DefaultValueAttribute(DirectCast(Nothing, String))> _
Private ReadOnly Property Prop() As Integer
Get
End Get
End Property
7 – پروژه را Build نمایید .
به خروجی زیر که در پنجره Build ظاهر میشود توجه کنید :
کد:
Preparing resources...
Updating references...
Performing main compilation...
در این لحضه کامپایلر VB.Net از کار می افتد .
8 – از منوی Build گزینه Cancel را در جهت توقف عملیات کامپایل کلیک کنید .
9 – از منوی فایل گزینه Close را انتخاب نمایید .
شما پیغام خطایی که راجع به آن صحبت شد را دریافت خواهید کرد .
منبع : support.microsoft.com