"المستطيل" غير موجود في مساحة الاسم "System.Drawing"
-
14-11-2019 - |
سؤال
باستخدام.نت 2.0.
System.Drawing
موجود في قائمة المراجع الخاصة بي.
هنا أنا using
إفادة:
using System.Drawing;
هنا هو الرمز:
private static Rectangle rScreen;
وهنا الخطأ في هذا السطر:
نص الخطأ:النوع أو اسم مساحة الاسم "مستطيل" غير موجود في مساحة الاسم "System.Drawing" (هل تفتقد مرجع التجميع؟)
لماذا؟
يحرر:وأضاف رمز التجميع:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("CompilerVersion", "v3.5");
CSharpCodeProvider codeProvider = new CSharpCodeProvider(dict);
CompilerParameters parameters = new CompilerParameters();
{
parameters.ReferencedAssemblies.Add("System.Drawing.dll");
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Core.dll");
parameters.ReferencedAssemblies.Add("System.Data.dll");
parameters.ReferencedAssemblies.Add("System.Data.Linq.dll");
parameters.ReferencedAssemblies.Add("System.DirectoryServices.dll");
parameters.ReferencedAssemblies.Add("System.Configuration.dll");
parameters.ReferencedAssemblies.Add("System.Web.dll");
parameters.ReferencedAssemblies.Add("System.Xml.dll");
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
parameters.ReferencedAssemblies.Add("System.Web.Services.dll");
parameters.ReferencedAssemblies.Add("System.ServiceModel.dll");
parameters.ReferencedAssemblies.Add("System.IdentityModel.dll");
parameters.ReferencedAssemblies.Add(string.Format(@"{0}{1}Microsoft.ReportViewer.Common.dll", AppDomain.CurrentDomain.RelativeSearchPath, @"\ReportViewer\"));
parameters.ReferencedAssemblies.Add(string.Format(@"{0}{1}Microsoft.ReportViewer.WebForms.dll", AppDomain.CurrentDomain.RelativeSearchPath, @"\ReportViewer\"));
}
CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, sources.ToArray());
try
{
ApexAssemblyManager.dynamicAssemblies.Add(hashKey, new DynamicAssemlby(results.CompiledAssembly));
return ApexAssemblyManager.dynamicAssemblies[hashKey].CreateInstance(typeName);
}
جميع ReferencedAssemblies الأخرى تعمل وتعمل لفترة طويلة.هذه هي المرة الأولى التي أواجه فيها مثل هذا الخطأ.
لقد تأكدت وتأكدت جيدًا من إضافة المرجع.إذا حاولت إضافته إلى المشروع مرة أخرى، أحصل على رسالة مفادها أن المرجع موجود بالفعل.
شكرًا
المحلول
لقد ذكرت في التعليقات والعلامات أن هذا يتم تجميعه ديناميكيًا بواسطة تطبيق آخر.ولذلك فمن المحتمل أن هذا التطبيق الآخر لا يشمل System.Drawing.dll
كمرجع عند إجراء التحويل البرمجي وبالتالي لم يتم حل النوع.ولا يكفي مجرد القول using System.Drawing
, ، يجب أيضًا تمرير التجميع الذي يحدد مساحة الاسم وأنواعه إلى المترجم.
في الكود، يتم ذلك باستخدام ملف CompilerParameters
تم تمرير المثيل عبر أحد CompileAssemblyFrom...
يدعو إلى CodeDomProvider
المثيل الذي يقوم بتنفيذ التجميع (في هذه الحالة، ملف CSharpCodeProvider
).ال CompilerParameters.ReferencedAssemblies
تشير المجموعة للمترجم إلى التجميعات التي يجب النظر إليها عند محاولة إجراء تحليل الكتابة.
تحديث
حاول إضافة صراحة mscorlib
إلى المراجع.
أيضًا، لا أعرف ما إذا كان هذا مرتبطًا، ولكن كما ذكرت الخادم (هل هي خدمة من نوع ما؟) تنص MSDN:
لا يتم دعم الفئات داخل مساحة الاسم System.drawing للاستخدام داخل خدمة Windows أو ASP.NET.قد تؤدي محاولة استخدام هذه الفئات من داخل إحدى أنواع التطبيقات إلى مشاكل غير متوقعة ، مثل تناقص أداء الخدمة واستثناءات وقت التشغيل.للحصول على بديل مدعوم ، راجع مكونات تصوير Windows.
أود أن أقول أن هذا يعتبر مشكلة غير متوقعة على الرغم من أنني لا أتوقع ظهور المشكلات أثناء عملية الترجمة، بل عند تنفيذ التعليمات البرمجية.ومع ذلك، فإنهم لا يحددون ذلك حقًا في الوثائق، لذلك يمكن أن ينطبق على استخدام System.Drawing.dll
كمرجع بشكل عام.