Publicación cruzada de Automapper https://github.com/AutoMapper/AutoMapper/issues/2455
Al agregar AutoMapper >= 6.2.0, el proyecto iOS de formularios no se puede compilar y genera un error CS1703.
El error exacto es
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.
Parece ser causado por AutoMapper agregando una dependencia adicional de System.Runtime.Serialization.Primitives.4.3.0
en 6.2.0
usando VS 15.5.1
La compilación fue exitosa
Construcción fallida
Parece que el mapeador automático está usando algo que requiere Reflection.Emit. Eso no va a funcionar en iOS.
@jassmith gracias por el comentario. Sin embargo, una pregunta, ¿Reflection.Emit causaría un error de tiempo de ejecución o un error de compilación?
AutoMapper utiliza la compilación del árbol de expresiones, por lo que finalmente se trata de una Expression.Lambda(...).Compile(). Usamos Reflection.Emit para un par de escenarios muy específicos.
Básicamente, para que podamos apuntar a iOS, debemos asegurarnos de tener un objetivo que no use / haga referencia a Reflection. ¿Emit en absoluto?
Sin embargo, el error de compilación suena como los problemas recientes con 15.5 y las redirecciones vinculantes.
Yo tuve el mismo problema. Mi solución fue usar un project.json en mi proyecto ios como este:
{
"dependencies": {
"System.Reflection.Emit": {
"version": "4.3.0",
"exclude": "all"
}
},
"frameworks": {
"Xamarin.iOS,Version=v1.0": {}
},
"runtimes": {
"win": {}
}
}
@gmwilhelm No sabía que project.json todavía existía. hoy aprendo
@jassmith , ¿hay alguna posibilidad de que vuelvas a revisar este boleto? Sé que lo ha marcado como no válido, pero creo que esto es realmente algo que Xam.Forms debería abordar
Estoy tratando de reproducir esto localmente con solo un paquete NuGet en blanco que
hace referencia a Reflection.Emit pero no lo usa. tengo el error de compilacion
una vez, pero luego desapareció misteriosamente.
El martes 2 de enero de 2018 a las 5:54 p. m. Wade Baglin [email protected] escribió:
@jassmith https://github.com/jassmith alguna posibilidad de que revises esto
billete de nuevo? Sé que lo ha marcado como no válido, pero creo que en realidad es
algo que Xam.Forms debería abordar—
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/xamarin/Xamarin.Forms/issues/1380#issuecomment-354906852 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAGYMoqgqceTH4BPe4vqZwLkAoYb1YO0ks5tGsGxgaJpZM4Q-gOM
.
@pleb @jbogard
Puedo reproducir el error de ensamblajes múltiples en Visual Studio 15.5.5 pero no en VSMac. Creé un elemento de DevCom para rastrear esto .
FYI: para que la solución anterior funcione, es posible que deba reiniciar su VS. Eso me pasó con VS para Mac.
@SvenEV tenía la solución en su compromiso
agregue esto al archivo csproj. Si está utilizando PackageReferences
<PackageReference Include="System.Reflection.Emit" Version="4.3.0">
<ExcludeAssets>all</ExcludeAssets>
</PackageReference>
Lo escribo aquí para hacerlo más visible. Por lo que he visto, la interfaz de emisión se usa en Automapper para mapear, por ejemplo, a las interfaces.
Comentario más útil
@SvenEV tenía la solución en su compromiso
agregue esto al archivo csproj. Si está utilizando PackageReferences
Lo escribo aquí para hacerlo más visible. Por lo que he visto, la interfaz de emisión se usa en Automapper para mapear, por ejemplo, a las interfaces.