| Mono(mono-config) | Mono(mono-config) |
نام (NAME)
mono-config - قالب فایل پیکربندی محیط اجرای Mono
توضیحات (DESCRIPTION)
محیط اجرای Mono دادههای پیکربندی را از فایل پیشوند نصب /etc/mono/config، فایل ~/.mono/config یا فایلی که توسط متغیر محیطی MONO_CONFIG مشخص شده است بارگذاری میکند.
به ازای هر اسمبلی بارگذاریشده، یک فایل پیکربندی با نام /path/to/the/assembly.exe.config و همچنین فایل ~/.mono/assemblies/ASSEMBLY/ASSEMBLY.EXT.config بارگذاری میشود.
این فایل رفتار محیط اجرا را کنترل میکند.
این فایل حاوی ساختاری شبیه به XML با بخشهای گوناگون است که همگی درون بخش <configuration> قرار دارند (در واقع برای تجزیه فایل از GMarkup استفاده میشود).
این صفحه راهنما، افزونههای مختص یونیکس و مختص Mono در فایل پیکربندی را شرح میدهد؛ برای جزئیات کامل، به صفحه وب http://www.mono-project.com/Config مراجعه کنید.
دستورالعمل <dllmap> (<dllmap> directive)
شما از دستورالعمل dllmap برای نگاشت کتابخانههای مشترک (shared libraries) ارجاع دادهشده توسط P/Invoke در اسمبلیهای خود به یک کتابخانه مشترک متفاوت استفاده میکنید.
این ویژگی معمولاً برای نگاشت کتابخانههای ویندوز به نام کتابخانههای یونیکس به کار میرود. عنصر dllmap دو صفت دریافت میکند:
- dll
- این مقدار باید همان رشتهای باشد که در صفت DllImport استفاده شده است و میتواند به صورت اختیاری دارای پیشوند "i:" باشد تا نشان دهد رشته باید بدون حساسیت به حروف بزرگ و کوچک تطبیق داده شود.
- target
- این مقدار باید نام کتابخانهای باشد که تابع در آن یافت میشود: این نام باید برای استفاده در توابع بومی بارگذاری کتابخانههای مشترک پلتفرم (مانند dlopen و غیره) مناسب باشد، بنابراین شاید بخواهید صفحات راهنمای مربوط به آنها را نیز بررسی کنید.
دستورالعمل <dllentry> (<dllentry> directive)
این دستورالعمل میتواند برای نگاشت یک جفت مشخص از dll/تابع به یک کتابخانه متفاوت و همچنین نام تابع متفاوت استفاده شود. این عنصر باید درون عنصر dllmap که تنها صفت dll آن مشخص شده است قرار گیرد.
عنصر dllentry ۳ صفت دریافت میکند:
نگاشت بر اساس سیستمعامل و پردازنده (Mapping based on operating system and cpu)
هر دو عنصر dllmap و dllentry دو صفت زیر را مجاز میدانند که استفاده از یک فایل پیکربندی واحد و پشتیبانی از چندین سیستمعامل و معماری با نیازمندیهای نگاشت متفاوت را آسان میکند:
- os
- این نام سیستمعاملی است که نگاشت باید برای آن اعمال شود. مقادیر مجاز عبارتند از: linux, osx, solaris, freebsd, openbsd, netbsd, windows, aix, hpux.
- cpu
- این نام معماری پردازندهای است که نگاشت باید برای آن اعمال شود. مقادیر مجاز عبارتند از: x86, x86-64, sparc, ppc, s390, s390x, arm, mips, alpha, hppa, ia64.
- wordsize
- این اندازه ثباتها (registers) در معماری مقصد است که میتواند ۳۲ یا ۶۴ باشد.
مقدار هر دو صفت میتواند فهرستی از مقادیر مجاز باشد که با کاما از یکدیگر جدا شدهاند. علاوه بر این، اولین نویسه میتواند یک '!' باشد تا معنای عبارت را معکوس کند. برای مثال، مقدار صفت "!windows,osx" به این معنی است که این مدخل در تمام سیستمعاملها به جز ویندوز و OS X در نظر گرفته میشود. هیچ فاصلهای در هیچ بخشی از مقدار مجاز نیست.
توجه داشته باشید که مدخلهای بعدی، مدخلهای تعریفشده قبلی در فایل را بازنویسی (override) خواهند کرد.
مثالها (EXAMPLES)
مثال زیر ارجاعات به کتابخانه مشترک `cygwin1.dll' را به فایل `libc.so.6' نگاشت میکند.
<configuration> <dllmap dll="i:cygwin1.dll" target="libc.so.6"/> </configuration>
نام کتابخانه در صفت DllImport مجاز است در هر حالتی از حروف بزرگ و کوچک باشد، مانند مثالهای زیر:
[DllImport ("cygwin1.dll")]
[DllImport ("Cygwin1.dll")]
[DllImport ("cygwiN1.Dll")]
این مثال متد #C زیر را:
[DllImport ("libc")]
static extern void somefunction ();
به differentfunction در libdifferent.so نگاشت میکند، اما هنگام اجرا در سیستمعاملهای Solaris و FreeBSD به همان تابع در کتابخانه libanother.so نگاشت میگردد.
<configuration> <dllmap dll="libc"> <dllentry dll="libdifferent.so" name="somefunction" target="differentfunction" /> <dllentry os="solaris,freebsd" dll="libanother.so" name="somefunction" target="differentfunction" /> </dllmap> </configuration>