Xamarin.forms: [Forms][iOS] ์˜ค๋ฅ˜ CS1703 ๋™์ผํ•œ ID๋ฅผ ๊ฐ€์ง„ ๋‹ค์ค‘ ์–ด์…ˆ๋ธ”๋ฆฌ Net standard 2.0 Automapper

์— ๋งŒ๋“  2017๋…„ 12์›” 12์ผ  ยท  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๊ฐ€ 6.2.0์—์„œ System.Runtime.Serialization.Primitives.4.3.0 ์˜ ์ถ”๊ฐ€ ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ฒˆ์‹ ๋‹จ๊ณ„

VS 15.5.1 ์‚ฌ์šฉ

  1. Xamarin ๊ต์ฐจ ํ”Œ๋žซํผ ์•ฑ ๋งŒ๋“ค๊ธฐ(Xam.Forms)
  2. ์ƒ์„ฑ ์˜ต์…˜์—์„œ iOS ๋ฐ .net ํ‘œ์ค€ ์„ ํƒ
  3. .net ํ‘œ์ค€ ํ”„๋กœ์ ํŠธ์— Automapper(6.2.2) ์ถ”๊ฐ€
  4. iOS ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

๋นŒ๋“œ ์„ฑ๊ณต

์‹ค์ œ ํ–‰๋™

๋นŒ๋“œ ์‹คํŒจ

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@SvenEV ๋Š” ์ปค๋ฐ‹์— ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์„ csproj ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. PackageReferences๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

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

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋” ์ž˜ ๋ณด์ด๋„๋ก ์—ฌ๊ธฐ์— ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณธ ํ•œ Emmit Interface๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ์ธํ„ฐํŽ˜์ด์Šค์— ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•ด Automapper์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  10 ๋Œ“๊ธ€

์ž๋™ ๋งคํผ๊ฐ€ Reflection.Emit์ด ํ•„์š”ํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. iOS์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@jassmith ๋Œ“๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ์€ Reflection.Emit์ด ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋‚˜ ๋นŒ๋“œ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋‚˜์š”?

AutoMapper๋Š” ํ‘œํ˜„์‹ ํŠธ๋ฆฌ ์ปดํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ฒฐ๊ตญ Expression.Lambda(...).Compile(). ์šฐ๋ฆฌ๋Š” ๋งค์šฐ ํ‘œ์ ํ™”๋œ ๋ช‡ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค์— Reflection.Emit์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ iOS๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋ฉด Reflection.Emit์„ ์ „ํ˜€ ์‚ฌ์šฉ/์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ๋Œ€์ƒ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋Š” 15.5 ๋ฐ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์˜ ์ตœ๊ทผ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋‚ด ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚ด ios ํ”„๋กœ์ ํŠธ์—์„œ project.json์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค.

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

@gmwilhelm project.json์ด ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ธ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๋‚˜๋Š” ๋ฐฐ์šด๋‹ค

@jassmith ์ด ํ‹ฐ์ผ“์„ ๋‹ค์‹œ ๊ฒ€ํ† ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ Xam.Forms๊ฐ€ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋นˆ NuGet ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ์—์„œ ์ด๋ฅผ ์žฌํ˜„ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
Reflection.Emit์„ ์ฐธ์กฐํ•˜์ง€๋งŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค
ํ•œ ๋ฒˆ ๊ทธ๋Ÿฌ๋‚˜ ์‹ ๋น„๋กญ๊ฒŒ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

2018๋…„ 1์›” 2์ผ ํ™”์š”์ผ ์˜คํ›„ 5์‹œ 54๋ถ„์— Wade Baglin [email protected] ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@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
.

@pleb @jbogard

Visual Studio 15.5.5์—์„œ๋Š” ๋‹ค์ค‘ ์–ด์…ˆ๋ธ”๋ฆฌ ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ VSMac์—์„œ๋Š” ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด DevCom ํ•ญ๋ชฉ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์œ„์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด VS๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ Mac ์šฉ VS์—์„œ ์ €์—๊ฒŒ ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.

@SvenEV ๋Š” ์ปค๋ฐ‹์— ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์„ csproj ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. PackageReferences๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

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

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋” ์ž˜ ๋ณด์ด๋„๋ก ์—ฌ๊ธฐ์— ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณธ ํ•œ Emmit Interface๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ์ธํ„ฐํŽ˜์ด์Šค์— ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•ด Automapper์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰