سؤال

إذن (على ما يبدو) من فراغ ، مشروعي يبدأ الحصول على مترجم تحذير 1685:

محددة مسبقا نوع 'System.وقت التشغيل.CompilerServices.اكستينسيوناتريبوتي' ويعرف في عدة جمعيات في العالمية اسم مستعار ، باستخدام تعريف من c:\Program Files\المرجعية جمعيات\Microsoft\Framework\v3.5\System.Core.dll'

حيرة ، بحثت المقالة MSDN لمعرفة السبب.ها هي المعلومات التي وجدتها:

Visual C# المرجع:أخطاء ، تحذيرات مترجم تحذير (المستوى 1) CS1685

رسالة الخطأ المحددة مسبقا نوع 'System.اكتب اسم' هو محدد في عدة جمعيات في العالم اسم مستعار ، باستخدام تعريف من الملف اسم'

يحدث هذا الخطأ عندما مسبقا نوع نظام مثل النظام.int32 هو وجدت في المجلسين.طريقة واحدة يمكن أن يحدث إذا لم يتم الرجوع mscorlib من اثنين من أماكن مختلفة ، مثل محاولة تشغيل the.Net الإصدارات 1.0 و 1.1 جنبا إلى جنب.

المترجم استخدام تعريف من واحد فقط من الجمعيات.على مترجم عمليات البحث العالمية الوحيدة الأسماء المستعارة ، لا البحث في مكتبات محددة /مرجع.إذا كان لديك محدد /nostdlib ، فإن المترجم البحث بالنسبة الكائن في بدء المستقبل جميع عمليات البحث عن أنواع محددة سلفا في الملف حيث وجدت كائن.

الآن أنا حقا الخدش رأسي.

  1. أنا لست تشغيل مختلفين إصدارات .NET Framework (إلا إذا كنت تعول 2.0 و 3.5).

  2. أنا لا ترجع أي غريب الجمعيات التي قد تجعل لي المشبوهة.

  3. أنا لا أذكر إجراء أي تغييرات على التطبيق الذي من شأنه أن يؤدي هذا التغيير.

  4. لقد تم التحقق من أن جميع مكونات الهدف .NET Framework version v2.0.50727.

أنا انفتاحا على اقتراحات أو أفكار حول كيفية الصحيح هذا.أعالج والتحذيرات الأخطاء و هو يقود لي مجنون.

ما يزعجني حقا هو أنني لا أعرف لماذا إنه تحدث.الأشياء التي تحدث يجب أن يكون ملحوظ السبب ، يجب أن أعرف لماذا حدث.إذا كنت لا يمكن تفسير ذلك ، لا أستطيع بدقة علاج ذلك.التخمين أبدا مرضية.

التطبيق هو بسيط يتألف من مكتبة فئة و تطبيق نماذج windows.

  • C# الطبقة مكتبة DLL توفير الوظائف الأساسية تغليف الوصول إلى قاعدة البيانات.DLL هذه المراجع العناصر التالية:

    • نظام
    • النظام.الأساسية
    • النظام.الأساسية.البيانات
    • النظام.البيانات
    • النظام.البيانات.DataSetExtensions
    • النظام.البيانات.OracleClient
    • النظام.الرسم
    • النظام.يقوم نظام ويندوز.أشكال
    • System.Xml
    • النظام.Xml.Linq
  • C# تطبيق نماذج Windows توفير واجهة المستخدم.هذا التطبيق المراجع العناصر التالية:

    • CleanCode
    • CleanCodeControls (سواء من توفر هذه الجملة محرر الدعم محليا بنيت ضد .NET framework 3.5).
    • LinqBridge
    • روزويل.إطار (مكتبة فئة أعلاه)
    • نظام
    • النظام.الأساسية
    • النظام.البيانات
    • النظام.البيانات.DataSetExtensions
    • النظام.البيانات.OracleClient
    • النظام.نشر
    • النظام.تصميم
    • النظام.الرسم
    • النظام.يقوم نظام ويندوز.أشكال
    • System.Xml
    • النظام.Xml.Linq

اسمحوا لي أن أعرف إذا كنت بحاجة إلى مزيد من المعلومات و أنا بكل سرور نقدم عليه.

هل كانت مفيدة؟

المحلول

LINQBridge يجعلني المشبوهة فورا.كامل القصد من هذا هو توفير سمة ملحق/طرق وغيرها 2.0 المستخدمين.إذا كان لديك 3.5 (System.Core.dll) لا تستخدم LINQBridge.إذا كنت هل تحتاج LINQBridge في 3.5 لسبب غامض (و لا أستطيع التفكير في أحد), ثم قد يكون لديك لاستخدام extern المستعار.ولكن أنا حقا شك كنت في حاجة إليها!

نصائح أخرى

آخر وسيلة سهلة للتحقق من:في التعليمات البرمجية الخاصة بك مؤقتا استخدام فئة في مكان ما.على سبيل المثال:

System.Runtime.CompilerServices.ExtensionAttribute x = null;

عند بناء هذا سوف يولد خطأ:

نوع 'System.وقت التشغيل.CompilerServices.اكستينسيوناتريبوتي' موجود في كل 'c:\Program Files\المرجعية جمعيات\Microsoft\Framework\v3.5\System.Core.dll و .....

و تظهر لك على الفور 2 مصادر تسبب الصراع.

مارك يكاد يكون من المؤكد الصحيح.هنا وسيلة للتحقق من

  1. فتح Reflector.exe
  2. إضافة كل من غير نظام الجمعيات
  3. F3 البحث عن اكستينسيوناتريبوتي

إذا ظهر في أي مكان إلى جانب النظام.الأساسية ثم تعرف من أين تأتي.

حل آخر لهذه المشكلة هو استخدام العالمية مستعار كله الجمعية:

مرجع -> خصائص -> الأسماء المستعارة -> استبدال 'العالمية' مع شيء آخر

لمعلوماتك:كان عندي نفس المشكلة و كان قادرا على حلها باستخدام Resharper هو "تحسين المراجع" الأمر ، ثم إزالة كافة المراجع المستخدمة.غير متأكد تماما لماذا التي عملت ، لكنه لم يفعل.

حل آخر لهذه المشكلة => انقر على الحق المشروع -> خصائص -> البناء> علاج الأخطاء والتحذيرات -> لا شيء

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top