.de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .TH mcs 1 "6 January 2001" "Mono" "دستورات کاربری پارچ لینوکس" .SH "نام (NAME)" mcs \- کامپایلر رسمی زبان C# در بستر فریم‌ورک Mono .SH "خلاصه دستور (SYNOPSIS)" .B mcs [\fIگزینه‌ها\fR] [\fIفایل‌های\-منبع\fR] .SH "توضیحات (DESCRIPTION)" دستور .B mcs کامپایلر توربو C# (که به عنوان کامپایلر C# مونو نیز شناخته می‌شود) و پیاده‌سازی مشخصات استاندارد زبان ECMA-334 است. شما می‌توانید یک یا چند گزینه را برای هدایت کامپایلر و مجموعه‌ای از فایل‌های منبع ارسال کنید. گزینه‌ها یا آرگومان‌های اضافی را می‌توان در یک فایل پاسخ (response file) قرار داد. فایل‌های پاسخ با قرار دادن نماد @ در ابتدای نام فایل پاسخ ارجاع داده می‌شوند. .PP کامپایلر .I mcs برای کامپایل بر اساس آخرین نسخه از کتابخانه کلاس پایه مونو (Mono Base Class Library) استفاده می‌شود و مشخصات زبان‌های C# 1.0، 2.0، 3.0، 4.0، 5.0 و 6.0 را با پشتیبانی جزئی از C# 7.0 به طور کامل پیاده‌سازی می‌کند. .PP برای اطلاعات بیشتر بخش بسته‌ها و کتابخانه‌ها را ببینید. .PP کامپایلر توربو C# همان گزینه‌های خط فرمانی را می‌پذیرد که کامپایلر C# مایکروسافت می‌پذیرد. این گزینه‌ها می‌توانند با یک اسلش یا خط تیره شروع شوند (برای مثال .B /checked مشابه .B \-checked است). علاوه بر این، برخی از گزینه‌های مشابه گنو (GNU) نیز پشتیبانی می‌شوند که با "--" شروع می‌شوند. تمام فلگ‌های اختصاصی MCS که در کامپایلر C# مایکروسافت در دسترس نیستند، فقط با گزینه‌های سبک گنو در دسترس هستند. .PP فایل‌های منبع C# باید با پسوند ".cs" خاتمه یابند. کامپایل کد منبع C# نیازمند این است که تمامی فایل‌های تشکیل‌دهنده یک کتابخانه، ماژول یا فایل اجرایی در خط فرمان مشخص شوند. هیچ پشتیبانی برای کامپایل جزئی وجود ندارد. برای بهره‌مندی از مزایای کامپایل جزئی، باید برنامه‌ها را در اسمبلی‌های اختصاصی خودشان کامپایل کرده و بعداً با فلگ .B \-r به آن‌ها ارجاع دهید. .PP کامپایلر توربو C# تصاویری (فایل‌های .exe) تولید می‌کند که حاوی بایت‌کد CIL هستند و می‌توانند توسط هر سیستمی که یک ماشین مجازی زیرساخت زبان مشترک (Common Language Infrastructure) را پیاده‌سازی کرده باشد (مانند موتور زمان اجرای .NET مایکروسافت در ویندوز یا موتور زمان اجرای Mono در سیستم‌های یونیکس) اجرا شوند. فایل‌های اجرایی به پردازنده یا سیستم‌عامل خاصی وابسته نیستند. .PP کامپایلر توربو C# به طور پیش‌فرض فقط به سه اسمبلی ارجاع می‌دهد: mscorlib.dll، System.dll و System.Xml.dll. اگر می‌خواهید به کتابخانه‌های اضافی ارجاع دهید، باید آن‌ها را به صورت دستی با استفاده از گزینه خط فرمان .B \-pkg: یا گزینه خط فرمان .B \-r: مشخص کنید. متناوباً، اگر می‌خواهید تمام کتابخانه‌های System را دریافت کنید، می‌توانید از گزینه خط فرمان .B \-pkg:dotnet استفاده کنید. .PP .SH "گزینه‌ها (OPTIONS)" .TP .I \-\-about نمایش اطلاعات درباره کامپایلر توربو C#. .TP .I \-\-addmodule:MODULE1[,MODULE2] ماژول‌های مشخص‌شده را در اسمبلی نهایی قرار می‌دهد. ماژول‌ها با فراخوانی کامپایلر همراه با گزینه .B \-target:module ایجاد می‌شوند. .TP .I \-checked, \-checked+ حالت کامپایل پیش‌فرض را روی `checked' تنظیم می‌کند. این کار باعث می‌شود تمام عملیات‌های ریاضی بررسی شوند (حالت پیش‌فرض unchecked است). .TP .I \-checked\- حالت کامپایل پیش‌فرض را روی `unchecked' تنظیم می‌کند. این کار باعث می‌شود تمام عملیات‌های ریاضی بدون بررسی انجام شوند (این حالت پیش‌فرض است). .TP .I \-clscheck\-, \-clscheck+ بررسی‌های مشخصات زبان مشترک (CLS) را غیرفعال یا فعال می‌کند (به طور پیش‌فرض فعال است). .Sp مشخصات زبان مشترک (CLS) زیرمجموعه‌ای سازگار از نوع‌ها و همچنین قراردادهایی را تعریف می‌کند که کامپایلرها (تولیدکنندگان CLS) و توسعه‌دهندگان باید رعایت کنند تا کد را برای سایر زبان‌های برنامه‌نویسی (مصرف‌کنندگان CLS) در دسترس قرار دهند. .TP .I \-codepage:ID کدپیج مورد استفاده برای پردازش فایل‌های ورودی را از نقطه‌ای که مشخص شده تعیین می‌کند. به طور پیش‌فرض، فایل‌ها در کدپیج بومی وابسته به محیط پردازش می‌شوند. کامپایلر همچنین به طور خودکار فایل‌های یونیکدی را که دارای بایت‌مارک جاسازی‌شده در ابتدا هستند تشخیص می‌دهد. .Sp سایر کدگذاری‌های محبوب عبارتند از 28591 (Latin1)، 1252 (iso-8859-1) و 65001 (UTF-8). .Sp کامپایلر MCS از چند نام میانبر پشتیبانی می‌کند: "utf8" می‌تواند به جای عدد مبهم 65001 برای تعیین utf-8 استفاده شود و "reset" مدیریت خودکار کدپیج‌ها را بازیابی می‌کند. این میانبرها در کامپایلر مایکروسافت موجود نیستند. .TP .I \-define:SYMLIST, \-d:SYMLIST نمادهای فهرست‌شده در لیست SYMLIST را که با نقطه-ویرگول (;) از هم جدا شده‌اند تعریف می‌کند. این نمادها می‌توانند در کد منبع توسط پیش‌پردازنده بررسی شوند، یا توسط متدهایی که با ویژگی Conditional علامت‌گذاری شده‌اند استفاده شوند. .TP .I \-debug, \-debug+ تولید اطلاعات اشکال‌زدایی. برای دریافت ردگیری پشته (stack traces) به همراه اطلاعات اشکال‌زدایی، باید زمان اجرای mono را با فلگ .B \-\-debug فراخوانی کنید. اطلاعات اشکال‌زدایی در یک فایل MDB واقع در همان پوشه خروجی اسمبلی تولیدشده ذخیره می‌شود. .TP .I \-debug\- اطلاعات اشکال‌زدایی را تولید نمی‌کند. .TP .I \-delaysign+ فقط کلید عمومی نام قوی (strongname) را در اسمبلی جاسازی می‌کند. امضای واقعی باید در مرحله بعد با استفاده از ابزار SN انجام شود. این گزینه برای محافظت از کلید خصوصی در طول توسعه مفید است. توجه داشته باشید که تأخیر در امضا فقط با استفاده از یک فایل کلید نام قوی امکان‌پذیر است (نه با نگهدارنده کلید / key container). این گزینه معادل قرار دادن [assembly: AssemblyDelaySign (true)] در کد منبع شما است. گزینه‌های کامپایلر بر ویژگی‌ها (attributes) اولویت دارند. .TP .I \-delaysign\- حالت پیش‌فرض. امضای نام قوی (strongname) اسمبلی با استفاده از فایل کلید نام قوی (یا نگهدارنده کلید). این گزینه معادل قرار دادن [assembly: AssemblyDelaySign (false)] در کد منبع شما است. گزینه‌های کامپایلر بر ویژگی‌ها (attributes) اولویت دارند. .TP .I \-doc:FILE مستندات C#/XML را از کد منبع استخراج کرده و در فایل مشخص‌شده FILE ذخیره می‌کند. .TP .I \-errorreport این فلگ توسط کامپایلر C# مونو نادیده گرفته می‌شود و صرفاً برای این وجود دارد که امکان استفاده از MCS به عنوان جایگزین CSC برای msbuild/xbuild فراهم باشد. .TP .I \-\-fatal برای اشکال‌زدایی کامپایلر استفاده می‌شود. این گزینه باعث می‌شود که هنگام صدور خطا یک استثنا (exception) تولید شود که توسط دیباگر قابل دریافت باشد. .TP .I \-filealign این فلگ توسط کامپایلر C# مونو نادیده گرفته می‌شود و صرفاً برای این وجود دارد که امکان استفاده از MCS به عنوان جایگزین CSC برای msbuild/xbuild فراهم باشد. .TP .I \-fullpaths به طور پیش‌فرض، هر خطا یا هشداری که توسط کامپایلر در کد منبع صادر می‌شود فقط شامل نام فایل است. این گزینه باعث می‌شود که کامپایلر مسیر مطلق فایل را صادر کند. .TP .I \-keyfile:KEYFILE امضای نام قوی (strongname) اسمبلی خروجی با استفاده از جفت‌کلید موجود در فایل کلید نام قوی (snk) مشخص‌شده. به طور پیش‌فرض (یا هنگام استفاده از delaysign-) یک جفت‌کلید کامل لازم است. فایلی که فقط حاوی کلید عمومی است می‌تواند با delaysign+ استفاده شود. این گزینه معادل قرار دادن [assembly: AssemblyKeyFile ("KEYFILE")] در کد منبع شما است. گزینه‌های کامپایلر بر ویژگی‌ها اولویت دارند. .TP .I \-keycontainer:CONTAINER امضای نام قوی (strongname) اسمبلی خروجی با استفاده از جفت‌کلید موجود در نگهدارنده (container) مشخص‌شده. توجه داشته باشید که هنگام استفاده از نگهدارنده‌های کلید، delaysign+ نادیده گرفته می‌شود. این گزینه معادل قرار دادن [assembly: AssemblyKeyName ("CONTAINER")] در کد منبع شما است. گزینه‌های کامپایلر بر ویژگی‌ها اولویت دارند. .TP .I \-langversion:TEXT نسخه زبان مورد استفاده را مشخص می‌کند. مجموعه ویژگی‌ها در هر نسخه از C# متفاوت است. از این سوییچ می‌توان برای محدود کردن کامپایلر به پذیرش تنها زیرمجموعه‌ای از ویژگی‌ها استفاده کرد. مقادیر ممکن عبارتند از: .RS .ne 8 .TP .I "Default" به کامپایلر دستور می‌دهد از آخرین نسخه استفاده کند. معادل آن حذف این سوییچ است (در حال حاضر به طور پیش‌فرض روی مشخصات زبان C# 6.0 تنظیم است). .TP .I "ISO-1" کامپایلر را محدود به استفاده از ویژگی‌های اولین نسخه استانداردشده ISO می‌کند. استفاده از ویژگی‌هایی مانند جنریک‌ها (generics)، کلاس‌های استاتیک، و متدهای ناشناس منجر به خطا خواهد شد. .TP .I "ISO-2" کامپایلر را محدود به استفاده از ویژگی‌های دومین نسخه استانداردشده ISO می‌کند. این مورد اجازه استفاده از ویژگی‌هایی مانند جنریک‌ها، کلاس‌های استاتیک، تکرارکننده‌ها (iterators) و متدهای ناشناس را می‌دهد. .TP .I "3" کامپایلر را فقط به ویژگی‌های موجود در C# 3.0 محدود می‌کند (ابرمجموعه‌ای از ISO-1 و ISO-2). .TP .I "4" کامپایلر را فقط به ویژگی‌های موجود در مشخصات C# 4.0 محدود می‌کند. .TP .I "5" کامپایلر را فقط به ویژگی‌های موجود در مشخصات C# 5.0 محدود می‌کند. .TP .I "6" کامپایلر را فقط به ویژگی‌های موجود در مشخصات C# 6.0 محدود می‌کند. .TP .I "experimental" ویژگی‌های ناپایدار از نسخه‌های آینده زبان را فعال می‌کند. .PP توجه داشته باشید که این فلگ فقط ویژگی‌های زبانیِ در دسترس برنامه‌نویس را محدود می‌کند. نسخه اسمبلی‌های تولیدشده را می‌توان با استفاده از گزینه .I SDK کنترل کرد. .ne .RE .TP .I \-lib:PATHLIST هر مسیر مشخص‌شده در لیست مسیرهای جداشده با کاما، کامپایلر را هدایت می‌کند تا کتابخانه‌ها را در آن مسیر مشخص جستجو کند. .TP .I \-L PATH کامپایلر را برای جستجوی کتابخانه‌ها در مسیر مشخص‌شده هدایت می‌کند. با استفاده مکرر از این گزینه می‌توان چندین مسیر را معرفی کرد. .TP .I \-main:CLASS به کامپایلر می‌گوید که کدام CLASS حاوی نقطه ورود (entry point) برنامه است. زمانی مفید است که چندین کلاس با متد Main را کامپایل می‌کنید. .TP .I \-nostdlib, \-nostdlib+ اگر می‌خواهید کتابخانه هسته (core library) را کامپایل کنید از این فلگ استفاده کنید. این گزینه باعث می‌شود که کامپایلر نوع‌های داخلی خود را از اسمبلی در حال کامپایل بارگذاری کند. .TP .I \-noconfig, \-noconfig+ بارگذاری پیکربندی پیش‌فرض کامپایلر را غیرفعال می‌کند. کامپایلر به طور پیش‌فرض به اسمبلی‌های سیستم ارجاع دارد. .TP .I \-nowarn:WARNLIST باعث می‌شود کامپایلر هشدارهای مشخص‌شده در لیست جداشده با کامای WARNLIST را نادیده بگیرد. .TP .I \-optimize, \-optimize+, \-optimize\- بهینه‌سازی‌های تولید کد کامپایلر را روی کد کنترل می‌کند. استفاده از -optimize یا -optimize+ بهینه‌سازی‌ها را روشن می‌کند و -optimize- آن را خاموش می‌کند. حالت پیش‌فرض در mcs به صورت optimize- است. این گزینه می‌تواند با -debug ترکیب شود اما برای بهترین تجربه اشکال‌زدایی توصیه می‌شود این گزینه خاموش بماند. .TP .I \-out:FNAME, \-o FNAME نام فایل خروجی تولیدی را تعیین می‌کند. .TP .I \-\-parse برای بنچمارک و سنجش کارایی استفاده می‌شود. کامپایلر فقط فایل‌های ورودی خود را تجزیه (parse) می‌کند. .TP .I \-pathmap:K=V[,Kn=Vn] یک نگاشت برای نام مسیرهای منبع مورد استفاده در خروجی تولیدشده تنظیم می‌کند. .TP .I \-pkg:package1[,packageN] ارجاع به اسمبلی‌های مربوط به بسته‌های داده‌شده. .Sp کامپایلر دستور pkg-config --libs را روی مجموعه بسته‌های مشخص‌شده در خط فرمان فراخوانی می‌کند تا کتابخانه‌ها و دایرکتوری‌های لازم برای کامپایل کد را به دست آورد. .Sp این گزینه معمولاً با مؤلفه‌های شخص ثالث استفاده می‌شود، مانند این: .nf $ mcs -pkg:gtk-sharp demo.cs .fi .RS .ne 8 .TP .I \-pkg:dotnet این گزینه به کامپایلر دستور می‌دهد به کتابخانه‌های System.* موجود در یک نصب استاندارد فریم‌ورک dotnet ارجاع دهد؛ توجه داشته باشید که این گزینه شامل تمام کتابخانه‌های مونو نمی‌شود، بلکه فقط شامل کتابخانه‌های System.* است. این یک میانبر مناسب برای کسانی است که کدهای خود را پورت می‌کنند. .ne .RE .TP .I \-platform:ARCH برای تعیین بستر یا معماری هدف استفاده می‌شود. مقادیر ممکن عبارتند از: anycpu، anycpu32bitpreferred، arm، x86، x64 یا itanium. گزینه پیش‌فرض anycpu است. .TP .I \-resource:RESOURCE[,ID] فایل منبع (resource) داده‌شده را در خروجی جاسازی می‌کند. از شناسه اختیاری ID می‌توان برای دادن یک نام متفاوت به منبع استفاده کرد. در صورت عدم تعیین، نام منبع همان نام فایل خواهد بود. .TP .I \-linkresource:RESOURCE[,ID] به منبع (RESOURCE) مشخص‌شده پیوند می‌دهد. از شناسه اختیاری ID می‌توان برای نام‌گذاری منبع پیوندیافته استفاده کرد. .TP .I \-r:ASSEMBLY1[,ASSEMBLY2], \-reference ASSEMBLY1[,ASSEMBLY2] به اسمبلی‌های نام‌برده ارجاع می‌دهد. از این گزینه برای استفاده از کلاس‌های اسمبلی نام‌برده در برنامه خود استفاده کنید. اسمبلی یا از دایرکتوری سیستمی که تمام اسمبلی‌ها در آن قرار دارند بارگذاری می‌شود، یا از مسیری که صریحاً با گزینه -L مشخص شده است. .Sp همچنین می‌توانید به جای کاما از نقطه-ویرگول (;) برای جداسازی اسمبلی‌ها استفاده کنید. .TP .I \-reference:ALIAS=ASSEMBLY پشتیبانی از نام مستعار خارجی (extern alias) برای C#. .Sp اگر اسمبلی‌های متفاوتی دارید که نوع‌های یکسانی ارائه می‌دهند، پشتیبانی از نام مستعار خارجی به شما اجازه می‌دهد نام‌هایی ارائه دهید که نرم‌افزار شما بتواند آن‌ها را از هم تشخیص دهد. نوع‌های موجود در ASSEMBLY با عنوان ALIAS نمایش داده می‌شوند، سپس در کد منبع C# باید این کار را انجام دهید: .Sp .nf extern alias ALIAS; .fi تا آن را وارد فضای نام (namespace) خود کنید. به عنوان مثال، برای کنار آمدن با دو کتابخانه گرافیکی که "Graphics.Point" را تعریف می‌کنند (یکی در "OpenGL.dll" و دیگری در "Postscript.dll")، کامپایلر را این‌گونه فراخوانی می‌کنید: .Sp .nf mcs -r:Postscript=Postscript.dll -r:OpenGL=OpenGL.dll .fi .Sp و در کد منبع خود می‌نویسید: .Sp .nf extern alias Postscript; extern alias OpenGL; class X { // This is a Graphics.Point from Postscrip.dll Postscript.Point p = new Postscript.Point (); // This is a Graphics.Point from OpenGL.dll OpenGL.Point p = new OpenGL.Point (); } .fi .TP .I \-recurse:PATTERN, \-\-recurse PATTERN کامپایل بازگشتی را با استفاده از الگوی مشخص‌شده انجام می‌دهد. در یونیکس پوسته عملیات تطبیق الگو (globbing) را انجام می‌دهد، بنابراین ممکن است بخواهید از آن به این صورت استفاده کنید: .PP .nf $ mcs -recurse:'*.cs' .fi .TP .I \-sdk:VERSION برای تعیین نسخه اسمبلی‌های کتابخانه کلاس پایه (Base Class Library) مورد استفاده برای کامپایل به کار می‌رود. مقادیر از پیش تعریف‌شده زیر معتبر هستند: 2، 4 (پیش‌فرض) و همچنین هر مقدار سفارشی. شماره نسخه از پیش تعریف‌شده مشخص می‌کند که اسمبلی تولیدشده باید با کدام نسخه .NET سازگار باشد. هنگامی که یک مقدار سفارشی مشخص شود، mcs تلاش می‌کند کتابخانه‌های کلاس پایه را در مسیر نصب مونو PREFIX/lib/mono/ پیدا کند. .TP .I \-\-shell کامپایلر را در حالت تعاملی راه‌اندازی می‌کند و یک پوسته C# برای عبارات و دستورات فراهم می‌آورد. یک راه میانبر استفاده مستقیم از دستور .I csharp است. .TP .I \-\-stacktrace در زمان گزارش خطا یک ردگیری پشته (stack trace) تولید می‌کند که برای اشکال‌زدایی کامپایلر مفید است. .TP .I \-target:KIND, \-t:KIND برای تعیین نوع هدف مورد نظر استفاده می‌شود. مقادیر ممکن عبارتند از: exe (فایل اجرایی معمولی)، winexe (فایل اجرایی Windows.Forms)، library (کتابخانه‌های مؤلفه) و module (کتابخانه جزئی). .TP .I \-\-timestamp یک فلگ اشکال‌زدایی دیگر. برای نمایش زمان صرف‌شده در نقاط مختلف فرآیند کامپایل استفاده می‌شود. .TP .I \-unsafe, \-unsafe+ کامپایل کدهای ناامن (unsafe) را فعال می‌کند. .TP .I \-v اشکال‌زدایی. تجزیه پرجزئیات yacc را فعال می‌کند. .TP .I \-\-version نسخه کامپایلر را نشان می‌دهد. .TP .I \-warnaserror, \-warnaserror+ تمام هشدارهای کامپایلر به عنوان خطا گزارش خواهند شد. .TP .I \-warnaserror:W1,[Wn], \-warnaserror+:W1,[Wn] یک یا چند هشدار کامپایلر را به عنوان خطا تلقی می‌کند. .TP .I \-warnaserror\-:W1,[Wn] یک یا چند هشدار کامپایلر را طوری تنظیم می‌کند که همیشه به عنوان هشدار تلقی شوند. هنگام استفاده همراه با -warnaserror مفید واقع می‌شود. .TP .I \-warn:LEVEL سطح هشدار را تعیین می‌کند. 0 کمترین سطح هشدار و 4 بالاترین سطح است. پیش‌فرض 4 است. .TP .I \-win32res:FILE یک فایل منبع Win32 با پسوند (.res) را برای بسته‌بندی در اسمبلی نهایی مشخص می‌کند. .TP .I \-win32icon:FILE آیکون مشخص‌شده در FILE را به خروجی اسمبلی نهایی ضمیمه می‌کند. .TP .I \-\- برای پایان دادن به تجزیه گزینه‌ها استفاده می‌شود و امکان می‌دهد پارامترهایی که شبیه گزینه هستند در خط فرمان ارسال شوند. .PP .SH "بسته‌ها و کتابخانه‌ها (PACKAGES AND LIBRARIES)" هنگام ارجاع به یک اسمبلی، اگر نام اسمبلی یک مسیر باشد، کامپایلر تلاش می‌کند اسمبلی مشخص‌شده در آن مسیر را بارگذاری کند. اگر مسیر نباشد، کامپایلر سعی می‌کند اسمبلی را از دایرکتوری جاری، دایرکتوری پایه کامپایلر، و در صورتی که در هیچ‌یک از آن مکان‌ها یافت نشد، از دایرکتوری‌های مشخص‌شده به عنوان آرگومان برای گزینه .B \-lib: بارگذاری کند. .PP کامپایلر از مسیر کتابخانه برای مکان‌یابی کتابخانه‌ها استفاده می‌کند و در صورت استفاده از آن دایرکتوری، قادر است به کتابخانه‌های یک بسته خاص ارجاع دهد. برای ساده‌سازی استفاده از بسته‌ها، کامپایلر C# شامل گزینه خط فرمان .B \-pkg: است که برای بارگذاری مجموعه‌های خاصی از کتابخانه‌ها استفاده می‌شود. .PP کتابخانه‌های قابل مشاهده برای کامپایلر به صورت نسبی نسبت به پیشوند نصب در مسیر PREFIX/lib/mono/ ذخیره می‌شوند که PACKAGEBASE نامیده می‌شود و مقادیر پیش‌فرض برای mcs، gmcs و smcs به شرح زیر است: .TP .I mcs به دایرکتوری PACKAGEBASE/1.0 ارجاع می‌دهد .TP .I gmcs به دایرکتوری PACKAGEBASE/2.0 ارجاع می‌دهد .TP .I smcs به دایرکتوری PACKAGEBASE/2.1 ارجاع می‌دهد .PP این‌ها تنها پروفایل‌های زمان اجرایی هستند که وجود دارند. اگرچه دایرکتوری‌های دیگری نیز وجود دارند (مانند 3.0 و 3.5)، اما آن‌ها واقعاً پروفایل زمان اجرا نیستند و صرفاً نگه‌دارنده‌هایی برای کتابخانه‌های اضافی هستند که روی پایه 2.0 ساخته شده‌اند. .PP ارائه‌دهندگان نرم‌افزار، نرم‌افزارهایی را توزیع می‌کنند که نسبت به دایرکتوری PACKAGEBASE نصب می‌شوند. این سازوکار با ابزار .I gacutil یکپارچه شده است که نه تنها اسمبلی‌های عمومی را در حافظه پنهان سراسری اسمبلی (GAC) نصب می‌کند، بلکه آن‌ها را در دایرکتوری PACKAGEBASE/PKG نیز نصب می‌کند (که در آن PKG نامی است که به فلگ -package در gacutil ارسال می‌شود). .PP به عنوان یک توسعه‌دهنده، اگر می‌خواهید از کتابخانه‌های Gtk# استفاده کنید، کامپایلر را به این صورت فراخوانی می‌کنید: .nf $ mcs -pkg:gtk-sharp-2.0 main.cs .fi گزینه .B \-pkg: به کامپایلر دستور می‌دهد تعاریف مربوط به gtk-sharp-2.0 را از pkg-config دریافت کند؛ این معادل است با ارسال خروجی دستور زیر به کامپایلر C#: .nf $ pkg-config --libs gtk-sharp-2.0 .fi معمولاً این کار صرفاً به کتابخانه‌های موجود در PACKAGEBASE/PKG ارجاع می‌دهد. .PP اگرچه نام دایرکتوری‌هایی برای 3.0 و 3.5 وجود دارد، اما این بدان معنا نیست که ویرایش‌ها یا پروفایل‌های کامپایلر 3.0 و 3.5 وجود دارند. آن‌ها صرفاً کتابخانه‌های جدیدی هستند که باید به صورت دستی با فراخوانی مناسب .B \-pkg: یا با ارجاع مستقیم به کتابخانه‌ها مشخص شوند. .PP .SH "تعریف‌های ویژه (SPECIAL DEFINES)" تعریف‌های .B TRACE و .B DEBUG معنای ویژه‌ای برای کامپایلر دارند. .PP به طور پیش‌فرض، فراخوانی متدها و خصوصیات در کلاس System.Diagnostics.Trace تولید نمی‌شود مگر اینکه نماد TRACE (از طریق "#define TRACE") در کد منبع شما یا با استفاده از .I "\-\-define TRACE" در خط فرمان تعریف شده باشد. .PP به طور پیش‌فرض، فراخوانی متدها و خصوصیات در کلاس System.Diagnostics.Debug تولید نمی‌شود مگر اینکه نماد DEBUG (از طریق "#define DEBUG") در کد منبع شما یا با استفاده از .I "\-\-define DEBUG" در خط فرمان تعریف شده باشد. .PP توجه داشته باشید که تأثیر تعریف TRACE و DEBUG یک تنظیم سراسری است، حتی اگر فقط در یک فایل تعریف شده باشند. .PP .SH "پشتیبانی از اشکال‌زدایی (DEBUGGING SUPPORT)" هنگام استفاده از فلگ .BR \-debug ، کامپایلر MCS فایلی با پسوند .mdb تولید می‌کند که حاوی اطلاعات اشکال‌زدایی برای اسمبلی تولیدشده است. این فایل توسط دیباگر مونو (mdb) استفاده می‌شود. .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" .TP .I "MCS_COLORS" اگر این متغیر تنظیم شده باشد، حاوی رشته‌ای به شکل "foreground,background" است که مشخص می‌کند از چه رنگی برای نمایش خطاها در برخی ترمینال‌ها استفاده شود. .Sp بخش پس‌زمینه اختیاری است و پیش‌فرض آن پس‌زمینه فعلی ترمینال شماست. رنگ‌های ممکن برای پیش‌زمینه عبارتند از: .B black, red, brightred, green, brightgreen, yellow, brightyellow, .B blue, brightblue, magenta, brightmagenta, cyan, brightcyan, grey, .B white, brightwhite. .Sp رنگ‌های ممکن برای پس‌زمینه عبارتند از: black, red, green, yellow, blue, magenta, cyan, grey و white. .Sp به عنوان مثال، می‌توانید این متغیر را از طریق پوسته خود تنظیم کنید: .nf export MCS_COLORS MCS_COLORS=errors=brightwhite,red .fi .Sp می‌توانید با تنظیم این متغیر روی "disable" طرح رنگ داخلی را غیرفعال کنید. .SH "نکات (NOTES)" در حین کامپایل، کامپایلر MCS نماد __MonoCS__ را تعریف می‌کند؛ از این نماد می‌توان در دستورات پیش‌پردازنده برای کامپایل کدهای اختصاصی کامپایلر C# مونو استفاده کرد. لطفاً توجه داشته باشید که این نماد فقط برای سنجش وجود این کامپایلر است و برای تشخیص بسترهای کامپایل یا استقرار مفید نیست. .SH "نویسندگان (AUTHORS)" کامپایلر C# مونو توسط Miguel de Icaza، Ravi Pratap، Martin Baulig، Marek Safar و Raja Harinath نوشته شده است. هزینه توسعه توسط Ximian، Novell و Marek Safar تأمین شده است. .PP .SH "مجوز (LICENSE)" مجموعه کامپایلر مونو (Mono Compiler Suite) تحت شرایط مجوز GNU GPL یا MIT X11 منتشر شده است. لطفاً برای جزئیات، فایل `COPYING' همراه برنامه را بخوانید. مجوزهای جایگزین برای کامپایلر از طرف Xamarin در دسترس است. .PP .SH "همچنین ببینید (SEE ALSO)" .BR csharp (1), .BR mono (1), .BR pkg-config (1), .BR sn (1) .PP .SH "اشکالات (BUGS)" برای گزارش اشکالات در کامپایلر، باید آن‌ها را در سامانه ردیابی باگ ما به نشانی زیر ثبت کنید: .PP http://www.mono-project.com/community/bugs .SH "لیست‌های ایمیل (MAILING LISTS)" لیست‌های ایمیل مونو در نشانی زیر فهرست شده‌اند: .PP http://www.mono-project.com/community/help/mailing-lists .SH "اطلاعات بیشتر (MORE INFORMATION)" کامپایلر C# مونو توسط شرکت‌های Novell, Inc (http://www.novell.com) و Xamarin Inc (http://www.xamarin.com) توسعه یافته است و بر اساس استاندارد زبان ECMA C# موجود در نشانی زیر است: .PP http://www.ecma.ch/ecma1/STAND/ecma-334.htm .PP صفحه اصلی کامپایلر C# مونو در نشانی زیر قرار دارد: .PP http://www.mono-project.com/docs/about-mono/languages/csharp