Xamarin.forms: [نماذج] [iOS] خطأ CS1703 تجميعات متعددة ذات هوية مكافئة Net standard 2.0 Automapper

تم إنشاؤها على ١٢ ديسمبر ٢٠١٧  ·  10تعليقات  ·  مصدر: xamarin/Xamarin.Forms

وصف

عبر البريد من Automapper https://github.com/AutoMapper/AutoMapper/issues/2455

عند إضافة AutoMapper> = 6.2.0 ، يفشل مشروع iOS للنماذج في إنشاء وإخراج خطأ CS1703.

الخطأ الدقيق هو

Error CS1703

Multiple assemblies with equivalent identity have been imported: 
'C:\Users\plebm\.nuget\packages\system.reflection.emit\4.3.0\ref\netstandard1.1\System.Reflection.Emit.dll' 
and 
'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\Xamarin.iOS\v1.0\Facades\System.Reflection.Emit.dll'.
Remove one of the duplicate references.

يبدو أن سبب ذلك هو إضافة AutoMapper تبعية إضافية System.Runtime.Serialization.Primitives.4.3.0 في 6.2.0

خطوات التكاثر

باستخدام VS 15.5.1

  1. إنشاء تطبيق Xamarin Cross-Plat (نماذج Xam.)
  2. حدد iOS و. net standard من خيارات الإنشاء
  3. أضف Automapper (6.2.2) إلى مشروع معيار net
  4. بناء مشروع iOS

سلوك متوقع

كان البناء ناجحًا

السلوك الفعلي

فشل البناء

invalid

التعليق الأكثر فائدة

SvenEV كان لديه الحل في التزامه
أضف هذا إلى ملف csproj. إذا كنت تستخدم PackageReferences

<PackageReference Include="System.Reflection.Emit" Version="4.3.0">
    <ExcludeAssets>all</ExcludeAssets>
</PackageReference>

أنا أكتبها هنا لجعلها أكثر وضوحًا ، بقدر ما نظرت ، يتم استخدام واجهة البث في Automapper لتعيين واجهات على سبيل المثال.

ال 10 كومينتر

يبدو أن المصمم الآلي يستخدم شيئًا يتطلب انعكاسًا. هذا لن ينجح في iOS.

jassmith شكرا على التعليق. على الرغم من ذلك ، هناك سؤال واحد ، هل يتسبب Reflection.Emit في حدوث خطأ في وقت التشغيل أو خطأ في البناء؟

يستخدم AutoMapper ترجمة شجرة التعبير ، لذلك في النهاية Expression.Lambda (...). نحن نستخدم Reflection.Emit لبضع سيناريوهات مستهدفة للغاية.

بالنسبة لنا بشكل أساسي لاستهداف نظام التشغيل iOS ، نحتاج إلى التأكد من أن لدينا هدفًا لا يستخدم / يشير إلى انعكاس.

يبدو خطأ التجميع مثل المشكلات الأخيرة مع 15.5 وعمليات إعادة التوجيه الملزمة.

كان لي نفس المشكلة. كان الحل هو استخدام project.json في مشروع iOS الخاص بي مثل هذا:

{
  "dependencies": {
    "System.Reflection.Emit": {
      "version": "4.3.0",
      "exclude": "all"
    }
  },
  "frameworks": {
    "Xamarin.iOS,Version=v1.0": {}
  },
  "runtimes": {
    "win": {}
  }
}

gmwilhelm لم أكن أعرف أن project.json كان لا يزال شيئًا. أنا أتعلم اليوم

jassmith هل هناك فرصة لمراجعة هذه التذكرة مرة أخرى؟ أعلم أنك حددت علامة "غير صالحة" ، لكنني أعتقد أن هذا شيء في الواقع يجب على Xam معالجته

أحاول إعادة إنتاج هذا محليًا باستخدام حزمة NuGet فارغة فقط
مراجع انعكاس. اقضيه لكن لا تستخدمه. حصلت على خطأ الترجمة
مرة ولكن بعد ذلك ذهب في ظروف غامضة.

في الثلاثاء ، 2 يناير ، 2018 الساعة 5:54 مساءً ، كتب واد باجلين إخطارات @github.com:

jassmith https://github.com/jassmith أي فرصة لمراجعة هذا
التذكرة مرة أخرى؟ أعلم أنك وضعت علامة على أنه غير صالح ، لكنني أعتقد أن هذا في الواقع
شيء يجب أن تتناوله Xam.Forms

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/xamarin/Xamarin.Forms/issues/1380#issuecomment-354906852 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AAGYMoqgqceTH4BPe4vqZwLkAoYb1YO0ks5tGsGxgaJpZM4Q-gOM
.

تضمين التغريدة

يمكنني إعادة إنتاج خطأ التجميعات المتعددة في Visual Studio 15.5.5 ولكن ليس في VSMac. لقد قمت بإنشاء عنصر DevCom لتتبع ذلك .

لمعلوماتك: من أجل إجراء الحل البديل أعلاه ، قد تحتاج إلى إعادة تشغيل VS. حدث ذلك بالنسبة لي مع VS for Mac.

SvenEV كان لديه الحل في التزامه
أضف هذا إلى ملف csproj. إذا كنت تستخدم PackageReferences

<PackageReference Include="System.Reflection.Emit" Version="4.3.0">
    <ExcludeAssets>all</ExcludeAssets>
</PackageReference>

أنا أكتبها هنا لجعلها أكثر وضوحًا ، بقدر ما نظرت ، يتم استخدام واجهة البث في Automapper لتعيين واجهات على سبيل المثال.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات