Restsharp: .NET Standard 2.0 ๋ฐ .NET Framework 4.5.2๋งŒ ์ง€์›

์— ๋งŒ๋“  2017๋…„ 09์›” 03์ผ  ยท  89์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: restsharp/RestSharp

์ด๊ฒƒ์€ ๋ชจ๋“  ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ์„œ์‚ฌ์‹œ์ž…๋‹ˆ๋‹ค.

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

.NET Standard 2.0์„ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋‹ค์Œ ํ”Œ๋žซํผ์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค๋Š” ์˜๋ฏธ

  • .NET ํ”„๋ ˆ์ž„์›Œํฌ 4.6.1
  • .NET ์ฝ”์–ด 2.0
  • ๋ชจ๋…ธ 5.4
  • ์ž๋งˆ๋ฆฐ.iOS 10.14
  • ์ž๋งˆ๋ฆฐ.๋งฅ 3.8
  • ์ž๋งˆ๋ฆฐ.์•ˆ๋“œ๋กœ์ด๋“œ 7.5
  • UWP vNext(์˜ฌํ•ด ๋ง ์ถœ์‹œ)

์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ shim์„ ์‚ฌ์šฉํ•˜์—ฌ RestSharp๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. HTTP ํ˜ธ์ถœ์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ํด๋ž˜์Šค์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค. HTTP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒˆ HttpClient ๋กœ ์ „ํ™˜๋œ ๊ฒฝ์šฐ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ์—ฌ๊ธฐ ์‚ฌ๋ฌด์‹ค์—์„œ RestSharp๋ฅผ ๊ฝค ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฏธ ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋˜๋Š” ์ƒˆ๋กœ์šด ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์„ ์ž‘์—… ์ค‘์ด๋ฏ€๋กœ RestSharp๊ฐ€ ์ตœ์‹  .NET์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด REST ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

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

938

.NET Standard 2.0์„ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋‹ค์Œ ํ”Œ๋žซํผ์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค๋Š” ์˜๋ฏธ

  • .NET ํ”„๋ ˆ์ž„์›Œํฌ 4.6.1
  • .NET ์ฝ”์–ด 2.0
  • ๋ชจ๋…ธ 5.4
  • ์ž๋งˆ๋ฆฐ.iOS 10.14
  • ์ž๋งˆ๋ฆฐ.๋งฅ 3.8
  • ์ž๋งˆ๋ฆฐ.์•ˆ๋“œ๋กœ์ด๋“œ 7.5
  • UWP vNext(์˜ฌํ•ด ๋ง ์ถœ์‹œ)

์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ shim์„ ์‚ฌ์šฉํ•˜์—ฌ RestSharp๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. HTTP ํ˜ธ์ถœ์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ํด๋ž˜์Šค์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค. HTTP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒˆ HttpClient ๋กœ ์ „ํ™˜๋œ ๊ฒฝ์šฐ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ์—ฌ๊ธฐ ์‚ฌ๋ฌด์‹ค์—์„œ RestSharp๋ฅผ ๊ฝค ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฏธ ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋˜๋Š” ์ƒˆ๋กœ์šด ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์„ ์ž‘์—… ์ค‘์ด๋ฏ€๋กœ RestSharp๊ฐ€ ์ตœ์‹  .NET์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด REST ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

@qJake .NET Standard 2.0์—๋Š” API ํ‘œ๋ฉด์ด ํฌ๊ฒŒ ํ™•์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ HttpClient๋กœ ์ „ํ™˜ํ•˜๋Š” ๋Œ€์‹  HttpWebRequest๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝํ—˜ํ•œ ๋ฌธ์ œ๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์™œ .NET Standard 2.0์ธ๊ฐ€? ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋‚ฎ์€ ๋ฒ„์ „์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

@mguinness @dotnet/corefx ํ”„๋กœ์ ํŠธ์—์„œ ์ด ์ฃผ์„ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค - HttpWebRequest ๋Š” .NET Standard์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ System.Net.Http.HttpClient ๋Š” .NET Standard์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

UWP ํ˜„์žฌ ๋ฒ„์ „๋„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. (Fall Creators ์—…๋ฐ์ดํŠธ ์ด์ „)

UWP ํ˜„์žฌ ๋ฒ„์ „์€ netstandard1.4๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹คํ—˜์„ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@qJake Well HttpWebRequest ๋Š” .NET Standard 2.0์— ์žˆ์œผ๋ฉฐ, ๊ท€ํ•˜์˜ ์–ด์„ค์…˜์€ .NET Standard 1.6 ์ดํ•˜์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

@mguinness ์˜ค, HttpClient ์ „ํ™˜ํ•ฉ๋‹ˆ๊นŒ?

์‚ฌ๋žŒ๋“ค์€ ํ˜„์žฌ ๋ฒ„์ „์˜ UWP ๋ฌธ์ œ๋กœ ์ธํ•ด 1.4๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. NETStandard 2.0์€ UWP vNext์—์„œ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

@qJake FWIW, ์ด์ „ ๋ฒ„์ „์˜ .NET Standard์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” System.Net.Requests nuget ํŒจํ‚ค์ง€๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์–˜๋“ค์•„, ์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ETA๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด dotnet core 2 ์•ฑ์—์„œ RestSharp๋ฅผ ์‚ฌ์šฉํ•  ๊ณ„ํš์ด๋ฉฐ ํŒจํ‚ค์ง€๋ฅผ ์ „ํ™˜ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง„ํ–‰์ค‘์ธ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ํ•ญ๋ชฉ์ด ์ œ๊ฑฐ๋˜์—ˆ์ง€๋งŒ JSON.NET๋„ ๋ฆด๋ฆฌ์Šค์— ํ•จ๊ป˜ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ„์† ์ง€์ผœ๋ด ์ฃผ์„ธ์š”.

AWS Lambda์— ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ RestSharp.NetCore 105.2.3์„ ์‚ฌ์šฉํ•  ๋•Œ AWS ๋ฐ˜ํ™˜ ์˜ค๋ฅ˜
-- ๊ฐ์ง€๋œ ํŒจํ‚ค์ง€ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ: 4.3.0-preview1-24530-04์—์„œ 4.1.0์œผ๋กœ System.Reflection.

RestSharp๋Š” 4.1์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ AWS๋Š” .NetCoreApp 1.0์— ๋Œ€ํ•ด 4.3 ๋ฒ„์ „ ์„ธํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

System.Runtime.Serialization.Primitives.4.3.0-preview1-24530-04์— ์ข…์†๋œ ๋ฒ„์ „์ž…๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” .net ์ฝ”์–ด๋กœ ์ด๋™ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ .net ํ‘œ์ค€ 2.0์—์„œ RestSharp๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. nuget ํŒจํ‚ค์ง€ ์„ค์น˜์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ 'RestSharpSigned 105.2.3'์€ ํ”„๋กœ์ ํŠธ ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ '.NETStandard,Version=v2.0' ๋Œ€์‹  '.NETFramework,Version=v4.6.1'์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง€๋Š” ํ”„๋กœ์ ํŠธ์™€ ์™„์ „ํžˆ ํ˜ธํ™˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŒจํ‚ค์ง€ ๋ณต์›์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์— ๋Œ€ํ•œ ํŒจํ‚ค์ง€ ๋ณ€๊ฒฝ ๋กค๋ฐฑ

@trampster ์ƒํƒœ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ

์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์š”๊ฐ€ ์žˆ์Œ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๊ฒŒ์‹œํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ .net ํ‘œ์ค€ 2.0์„ ๋ฆด๋ฆฌ์Šคํ•  ๋•Œ Microsoft์—์„œ ๋ฐœํ‘œํ•œ .net ํ‘œ์ค€ 2.0์˜ .net ์ „์ฒด dll์„ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•œ .NET Framework ํ˜ธํ™˜์„ฑ ๋ชจ๋“œ๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ Rest ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ด๋™ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€๋งŒ ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ณ€ํ™˜์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ nuget https://www.nuget.org/packages/RestSharp.NetCore ์— 98,895 ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์žˆ๋Š” RestSharp.NetCore ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ๋ฏฟ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด.

@trampster ์ด๋Š” ์–ต์ œ๋  ์ˆ˜ ์žˆ๋Š” nuget ๊ฒฝ๊ณ ์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด .NET Framework ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์žฌ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ๋˜ํ•œ csproj์˜ ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? netcoreapp2.0 ๋˜๋Š” v4.6.1์ž…๋‹ˆ๊นŒ?

๋งˆ์ง€๋ง‰ ์ค„์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ๋กค๋ฐฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ ๋‚˜๋Š” RestSharp์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์—†์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‚ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์œผ๋ฉด netcore2.0 ๋˜๋Š” v4.6.1์ด ์•„๋‹Œ .net ํ‘œ์ค€ 2.0์—์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฒฝ๊ณ ์—๋Š” v4.6.1์ด ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ RestSharp nuget ํŒจํ‚ค์ง€์—๋Š” v4.6.1์ด ์—†๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@trampster ํ˜ธํ™˜์„ฑ ๋ธŒ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .NET Core 2.0 ์•ฑ์— ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ํ–ˆ์ง€๋งŒ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด HttpWebRequest ์‚ฌ์šฉ์œผ๋กœ ์š”์•ฝ๋˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. NuGet ํŒจํ‚ค์ง€ ์„ค์น˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜ƒ

๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :\ @alexeyzimarev ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋„์›€์„ ์ค„ ์ˆ˜

.NET Core ์•ฑ์—์„œ ํ˜„์žฌ nuget ํŒจํ‚ค์ง€ ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ .NET Core ์ฝ˜์†” ์•ฑ์„ ๋งŒ๋“ค๊ณ  ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ Install-Package RestSharp -Version 105.2.3 ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ Main์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

```C#
var ํด๋ผ์ด์–ธํŠธ = ์ƒˆ๋กœ์šด RestClient();
client.BaseUrl = ์ƒˆ๋กœ์šด Uri("https://api.github.com/");

var ์š”์ฒญ = ์ƒˆ๋กœ์šด RestRequest();
request.Resource = "์‚ฌ์šฉ์ž/restsharp/๋ฆฌํฌ์ง€ํ† ๋ฆฌ";

var ์‘๋‹ต = client.Execute(์š”์ฒญ);
```

netcoreapp2.0์„ ํƒ€๊ฒŸํŒ…ํ•˜๋ฉด System.PlatformNotSupportedException: Operation is not supported on this platform. ๋˜์ง€๋งŒ csproj์—์„œ <TargetFramework>net46</TargetFramework> ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

@niemyjski ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ RestSharp.NetCore ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”. ๋‹ค์Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉ ์ค‘์ด๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์•ˆ์ •์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ADH.ํ‘ธ์‹œ์ฝ”์–ด
์•ฑ๋ฒ ์ด์–ด์ƒคํ”„
CoreLib.Web
์นด์šฐ์น˜DB.ํด๋ผ์ด์–ธํŠธ
DocuSign.NetCore
Flip.PomboCorreio.Connector
FluentEmail.Mailgun
GiphyApiClient.NetCore
์ธํ„ฐ์ฝค.์ฝ”์–ด
IronSphere.Henchmen
MasterCard-Core-๋น„๊ณต์‹
์— ๋ฑ…ํฌ๋‹ท๋„ท
MessageMedia.REST.API.NetCore
๋ฏธ๋‹ˆ์˜ค.๋„ท์ฝ”์–ด
MiX.Integrate.Api.ํด๋ผ์ด์–ธํŠธ
OdinSdk.BaseLib.Core
OneSignal.AspNet.Core.SDK
OneSignal.CSharp.SDK.Core
Onlinesites.ShopFacilBradesco
pusher-http-dotnet-core
RepositoryFramework.Api
RepositoryFramework.EntityFramework
RestSharp.Newtonsoft.Json
RestSharp.Newtonsoft.Json.NetCore
Slack.Webhooks.Core
StoneCo.PomboCorreio.Connector
SwitchAPI.์ปค๋„ฅํ„ฐ
Syncromatics.Clients.Metro.Api
TransportApi.Sdk.NetCore
Twilio.NetCore
UtilityFramework.Application.Core
UtilityFramework.Services.Iugu.Core

RestSharp.NetCore์˜ ์—…๋กœ๋”๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ฑฐ๊ธฐ github๋ฅผ ๋ณด์•˜๊ณ  RestSharp์˜ ํฌํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€์— ๋ผ์ด์„ผ์Šค๊ฐ€ ๋‚˜์—ด๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์•Œ๊ธฐ๋กœ๋Š” ์•…์„ฑ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์†Œ์œ ํ•œ ์‚ฌ๋žŒ์€ restsharp ํŒจํ‚ค์ง€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์†Œ์œ ๊ถŒ์„ ์ฐพ์•„์•ผ ํ•˜๋ฉฐ... ์•„๋งˆ๋„ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ฅผ ๋””์ปดํŒŒ์ผํ•˜์—ฌ ์•…์„ฑ ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2017๋…„ 10์›” 5์ผ ์˜คํ›„ 10์‹œ 57๋ถ„,

@niemyjski (https://github.com/niemyjski) ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ RestSharp.NetCore(https://www.nuget.org/packages/RestSharp.NetCore/)๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”. ๋‹ค์Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉ ์ค‘์ด๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์•ˆ์ •์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ADH.ํ‘ธ์‹œ์ฝ”์–ด
์•ฑ๋ฒ ์ด์–ด์ƒคํ”„
CoreLib.Web
์นด์šฐ์น˜DB.ํด๋ผ์ด์–ธํŠธ
DocuSign.NetCore
Flip.PomboCorreio.Connector
FluentEmail.Mailgun
GiphyApiClient.NetCore
์ธํ„ฐ์ฝค.์ฝ”์–ด
IronSphere.Henchmen
MasterCard-Core-๋น„๊ณต์‹
์— ๋ฑ…ํฌ๋‹ท๋„ท
MessageMedia.REST.API.NetCore
๋ฏธ๋‹ˆ์˜ค.๋„ท์ฝ”์–ด
MiX.Integrate.Api.ํด๋ผ์ด์–ธํŠธ
OdinSdk.BaseLib.Core
OneSignal.AspNet.Core.SDK
OneSignal.CSharp.SDK.Core
Onlinesites.ShopFacilBradesco
pusher-http-dotnet-core
RepositoryFramework.Api
RepositoryFramework.EntityFramework
RestSharp.Newtonsoft.Json
RestSharp.Newtonsoft.Json.NetCore
Slack.Webhooks.Core
StoneCo.PomboCorreio.Connector
SwitchAPI.์ปค๋„ฅํ„ฐ
Syncromatics.Clients.Metro.Api
TransportApi.Sdk.NetCore
Twilio.NetCore
UtilityFramework.Application.Core
UtilityFramework.Services.Iugu.Core

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub(https://github.com/restsharp/RestSharp/issues/992#issuecomment-334651808)์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์Šค๋ ˆ๋“œ๋ฅผ ์Œ์†Œ๊ฑฐ(https://github.com/notifications/unsubscribe-auth)ํ•˜์„ธ์š”. /AA-So9HrYQHV5nlV1m7W7eY-y_F5cBqqks5spaUXgaJpZM4PLH2m).

@alexeyzimarev ์˜ค๋Š˜ ํ”„๋ฆฌ๋ฆด๋ฆฌ์ฆˆ nuget ํŒจํ‚ค์ง€๋ฅผ ์–ป์„ ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฒ ํƒ€ ๋ฒ„์ „์ด๊ณ  ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์ž‘๋™ํ•˜๋”๋ผ๋„ ์ผ๋ถ€ ๋‹ค๋ฅธ ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šฌํ”ˆ RESTsharp๋Š” Core 2.0์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. HttpClient๋กœ ๋Œ์•„๊ฐ”๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

@niemyjski ์•„๋‹ˆ์š”, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. WebRequest๋ฅผ HttpClient๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ ํฐ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” WebRequest๊ฐ€ netstandard 2.0์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  1.6์„ ์ง€์›ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@niemyjski ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณ„๋„์˜ ๋ถ„๊ธฐ์— ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์‹ค์ œ๋กœ netstandard 2.0์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. netstandard 1.6์€ ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ HttpClient๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค: https://github.com/restsharp/RestSharp/tree/netstandard
ํ™๋ณด ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

@amivit ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์‹คํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹น์‹ ์˜ ์‹œ๊ฐ„์„ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค, ๊ทธ๋ ‡์ฃ ?

WebRequest๋ฅผ HttpClient๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ ํฐ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” WebRequest๊ฐ€ netstandard 2.0์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  1.6์„ ์ง€์›ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

System.Net.Requests nuget ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ž˜๋ชป๋œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” WebRequest๋ฅผ ๊ณ ์ˆ˜ํ•˜๊ณ  ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ HttpClient๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์Šต๋‹ˆ๊นŒ?

@mguinness ์ด ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ํ–ˆ๋‹ค.

@mguinness ์šฐ๋ฆฌ๋Š” ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค - 1.6์€ ์žŠ์–ด๋ฒ„๋ฆฌ๊ณ  2.0์œผ๋กœ ๊ฐ€๊ณ  WebRequest๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@alexeyzimarev ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์—ฌํ•  ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์›ํ•œ๋‹ค. RESTsharp๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ HttpClient์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค. 2012๋…„๋ถ€ํ„ฐ WebClient ๋˜๋Š” .NET 4.5์— ๋น„ํ•ด ๊ฐœ์„ ๋œ ๊ธฐ๋Šฅ์ด ์—†์—ˆ์Šต๋‹ˆ๊นŒ?

@amivit ์•„๋งˆ ๊ณ ์žฅ๋‚˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ณ ์น˜์ง€ ๋งˆ์„ธ์š”.

๋ฏธ๋ฏธ๋ฏธ๋งŒ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค :rofl:
๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ํด๋ผ์ด์–ธํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ .net core 2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ RestSharp์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ  NU1603: RestSharp.NetCore 105.2.3์€ System.Runtime.Serialization.Formatters(>= 4.0.0-rc4-24217-03)์— ์˜์กดํ•˜์ง€๋งŒ System.Runtime.Serialization.Formatters 4.0.0-rc4-24217-03์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค๋ฆฝํ•˜๋‹ค. System.Runtime.Serialization.Formatters 4.3.0-preview1-24530-04์˜ ๋Œ€๋žต์ ์ธ ์ตœ์ƒ์˜ ์ผ์น˜๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ RestSharp๋Š” ์•„์ง .net core 2.0์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์–ธ์  ๊ฐ€๋Š” ๋ ๊นŒ์š”? ๋‚ ์งœ๊ฐ€ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๊นŒ? (๊ธฐ๊ณ ์ž๋กœ์„œ) ์ด ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€๋“œ๋ฆด๊นŒ์š”?

@matthiasburger ๋Š” netstandard ๋ถ„๊ธฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๋Œ“๊ธ€ ์œ„์— ๋ช‡ ๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ๋งŒ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ 2.0์œผ๋กœ ๊ฐ€์‹ญ์‹œ์˜ค. ๋‚˜์ค‘์— ํ•ญ์ƒ http ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ... ๋˜ํ•œ
๋™๊ธฐํ™” ๋ฐฉ๋ฒ•์„ ๊ฐ–๋„๋ก ์ปดํŒŒ์ผ๋Ÿฌ ์ง€์‹œ๋ฌธ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
(๋ผˆ๋Œ€)

๊ฐ์‚ฌ ํ•ด์š”
-๋ธ”๋ ˆ์ดํฌ ๋‹ˆ์—๋ฏธ์Šคํ‚ค

2017๋…„ 10์›” 11์ผ ์ˆ˜์š”์ผ ์˜ค์ „ 6:43 Alexey Zimarev [email protected]
์ผ๋‹ค:

@matthiasburger https://github.com/matthiasburger netstandard ํ™•์ธ
๋‚˜๋ญ‡ ๊ฐ€์ง€.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/restsharp/RestSharp/issues/992#issuecomment-335782906 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AA-So8akA6MlKfoypWDSAqaElcYBPoAks5srKnUgaJpZM4PLH2m
.

sry @alexeyzimarev ๋•Œ๋กœ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ดํŽด๋ด…๋‹ˆ๋‹ค :)

@niemyjski ๋ชจ๋“  pragma ์ง€์‹œ๋ฌธ์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ, ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ๋งˆ๋‹ค ํŽธ์ฐจ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด netstandard๊ฐ€ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์„ ์–ธํ•œ ๊ฒƒ์ด๋ฉฐ ์ €๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž, ์ด์ œ netstandard ๋ถ„๊ธฐ๊ฐ€ ์„œ๋ช…๋œ ๊ฒƒ๊ณผ ์„œ๋ช…๋˜์ง€ ์•Š์€ ๋ชจ๋‘์— ๋Œ€ํ•ด ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์‹คํŒจํ•œ ๋„ค ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ(์ธ์ฝ”๋”ฉ, ๋””์ฝ”๋”ฉ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ์•„์ง ํฌํ•จ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ์— ์ฝ”๋“œ๋ฅผ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋นŒ๋“œ ๋ฐ ํŒฉ์„ DotNetCli๋กœ ์ „ํ™˜ํ•˜๋ ค๋ฉด ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. HttpListener(ํ†ตํ•ฉ)์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” ์˜ˆ์™ธ๋กœ ์ธํ•ด ๋‘ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์กฐ๊ฑด๋ถ€๋กœ ๋ฌด์‹œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์„œ๋ฒ„์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์‹ญ์‹œ์˜ค.

์ด์ œ DotNetCli๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  nuget.exe ์‚ฌ์šฉ์„ ์ค‘์ง€ํ•˜๋„๋ก ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ์ผ์„ ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค @alexeyzimarev! ์ฒซ ๋ฐœ๋งค๊ฐ€ ๋„ˆ๋ฌด ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค๐Ÿ‘

VS2017 ๋ฐ .NET Core 2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์‹ค์ œ IIS์—์„œ ํ…Œ์ŠคํŠธ๋œ 106.0.0-alpha0277

ErrorException: System.PlatformNotSupportedException: ์ด ํ”Œ๋žซํผ์—์„œ๋Š” ์ž‘์—…์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
System.Net.SystemWebProxy.GetProxy(Uri ๋Œ€์ƒ)์—์„œ
System.Net.ServicePointManager.ProxyAddressIfNecessary(Uri& ์ฃผ์†Œ, IWebProxy ํ”„๋ก์‹œ)์—์„œ
System.Net.ServicePointManager.FindServicePoint์—์„œ(Uri ์ฃผ์†Œ, IWebProxy ํ”„๋ก์‹œ)
System.Net.HttpWebRequest.get_ServicePoint()์—์„œ
RestSharp.Http.ConfigureWebRequest(๋ฌธ์ž์—ด ๋ฉ”์„œ๋“œ, Uri URL)
RestSharp.Http.PostPutInternal(String ๋ฉ”์„œ๋“œ)์—์„œ
RestSharp.Http.AsPost์—์„œ(๋ฌธ์ž์—ด httpMethod)
RestSharp.RestClient.DoExecuteAsPost(IHttp http, String ๋ฉ”์„œ๋“œ)์—์„œ
RestSharp.RestClient.Execute(IRestRequest ์š”์ฒญ, ๋ฌธ์ž์—ด httpMethod, Func`3 getResponse)์—์„œ

๋‚˜๋Š” ๊ทธ๋“ค์ด ์ดˆ๊ณผ ์‹œ๊ฐ„์— ๋งŽ์€ IsXYZ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋ž˜ํ•‘ํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

Windows์—์„œ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ Linux์—์„œ ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@ maciek12305 ์˜ˆ์™ธ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด์„œ ๊ฑฐ๊ธฐ์— ๋„๋‹ฌํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@niemyjski Linux์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ ์ƒˆ CI ๋นŒ๋“œ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค์Œ ์ฃผ์— ์ž˜ํ•˜๋ฉด ๋‚˜์ค‘์— Travis๋ฅผ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ https://github.com/Azure/azure-iot-sdk-csharp/issues/140์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ ํ”„๋ก์‹œ์— ๋Œ€ํ•œ ์„ค์ •์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ๋กœ๋“œ๋˜๊ธฐ ๋•Œ๋ฌธ์— .NET Core๊ฐ€ ๊ธฐ๋ณธ ํ”„๋ก์‹œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ž‘๋™ํ•ด์•ผ ํ•˜๋ฉฐ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ .NET Core์—์„œ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ชจ๋“  ๊ฒƒ์„ ์šฐํšŒํ•˜๊ณ  ์ง์ ‘ ์ด๋™ํ•˜๋Š” "๊ธฐ๋ณธ ํ”„๋ก์‹œ" ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ConfigureProxy ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์‹  ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์‹ญ์‹œ์˜ค: https://www.nuget.org/packages/RestSharp/106.0.0-alpha0281

@niemyjski ์‹ค์ œ๋กœ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” Mac์—์„œ ์ž˜ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Linux์—์„œ๋„ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@alexeyzimarev ์ตœ์‹  ํŒจํ‚ค์ง€๋Š” Win 10์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์ฝ”๋“œ์— ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

C# //https://github.com/dotnet/corefx/commit/6acd74dda7bc4f585d2c4006da4a8b2deb0261ad var proxy = WebRequest.DefaultWebProxy; WebRequest.DefaultWebProxy = null;

@mguinness ๊ทธ๋ž˜์„œ proxy ๋ณ€์ˆ˜์— ์ด์ „ ๊ฐ’(๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ)์„ ์œ ์ง€ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฐจ์ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ผ์ธ์€

WebRequest.DefaultWebProxy = null;

๋„์›€์ด ๋œ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@alexeyzimarev "WebRequest.DefaultWebProxy: Set๊ฐ€ ์ด์ „ Get ์—†์ด๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค" ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์ดํ•ด. ๊ธฐ๋ณธ ์†์„ฑ์„ ์กฐ์ž‘ํ•˜๋Š” ๋Œ€์‹  ์š”์ฒญ ํ”„๋ก์‹œ ์†์„ฑ์„ null๋กœ ์„ค์ •ํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@mguinness ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@mavanmanen UWP๋กœ ์ด๊ฒƒ๋„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? https://www.nuget.org/packages/RestSharp/106.0.0-alpha0282

๋ฒ„์ „ 106.0.0-alpha0282์—์„œ "์ด ํ”Œ๋žซํผ์—์„œ๋Š” ์ž‘์—…์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."๋ผ๋Š” ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@remiskaune ์ฝ”๋“œ์— ์ด ์ค„์„ ํฌํ•จ์‹œํ‚ค๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๊นŒ?

var proxy = WebRequest.DefaultWebProxy;
WebRequest.DefaultWebProxy = null;

๊ฐ์‚ฌ ํ•ด์š”. ์ด์ œ ๋ฒ„์ „ 106.0.0-alpha0282์˜ ์ด ์ค„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์งˆ๋ฌธ์€ ๋‚ด๊ฐ€ RestSharp ์ฝ”๋“œ์— ์ด ์ค„์„ ํฌํ•จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์—†์œผ๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค...

์•„๋งˆ๋„ WebRequest์— ๋‹ค๋ฅธ ๋ฒ”์œ„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ •์  ํด๋ž˜์Šค์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๊นŒ?

์ƒ˜ํ”Œ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์ƒ˜ํ”Œ ์•ฑ์—์„œ ๋‹ค์Œ์„ ํ™•์ธํ•˜์—ฌ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WebRequest.DefaultWebProxy

๋˜ํ•œ RestSharp๊ฐ€ (๋””๋ฒ„๊น… ๋ชฉ์ ์œผ๋กœ) ๋ณด๊ณ  ์žˆ๋Š” ๊ฐ’์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:

public IWebProxy GetCurrentProxy() => WebRequest.DefaultWebProxy;

๋‘˜์ด ๋‹ค๋ฅธ์ง€ ๋ณด์ด์‹œ์ฃ ?

@qJake ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜๋ฅผ ์œ„ํ•ด ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :) ๋‹ค์Œ ์ฃผ๊นŒ์ง€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์‹œ๊ฐ„์„ ํ• ์• ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ปจํผ๋Ÿฐ์Šค์—์„œ ์—ฐ์„คํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

WebRequest.DefaultProxy ๋ฅผ null์— ํ• ๋‹นํ•˜์—ฌ ํ”„๋ก์‹œ ๋ฌธ์ œ๊ฐ€ "์ˆ˜์ •๋œ" ๊ฒฝ์šฐ ์ƒˆ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ ๋ฌธ์ œ๋Š” ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ .NET Standard ์–ด์…ˆ๋ธ”๋ฆฌ์—๋งŒ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. .NET Framework ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ์ด์ „๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
https://www.nuget.org/packages/RestSharp/106.0.0-alpha0284

๋ณด๊ณ ๋œ ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฉด ๋ฆด๋ฆฌ์Šค ์ค€๋น„๋ฅผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ƒ๋‹นํžˆ ๊ธ์ •์ ์ธ ๋ฐ˜์‘์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ข…์† ํŒจํ‚ค์ง€(Atlassian.JIRA)๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋ ค๊ณ  ๋†€๊ณ  ์žˆ์—ˆ๊ณ  .NET ํ‘œ์ค€ 2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋ชจ๋“  ํ†ตํ•ฉ/๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ "๊ทธ๋ƒฅ ์ž‘๋™"ํ•˜์—ฌ LGTM์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ https://bitbucket.org/farmas/atlassian.net-sdk/issues/306/support-for-dotnet-core .

์šฐ๋ฆฌ ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

.net ํ‘œ์ค€ 2.0 ํ”„๋กœ์ ํŠธ ๋ฐ .net 4.6.1 ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

.net์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ 4.6.1. Visual Studio๊ฐ€ ๋…ธ๋ž€์ƒ‰ ๋Š๋‚Œํ‘œ๋กœ ํ‘œ์‹œํ•˜๋Š” ๋‹ค์Œ ์ฐธ์กฐ๋ฅผ ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ.๋„ท.Http
System.Runtime.Serialization.Primitives
System.Security.Cryptography.Algorithms
System.Security.Cryptography.Encoding
System.Security.Cryptography.Primitives
System.Security.Cryptography.X509์ธ์ฆ์„œ

์ด๊ฒƒ์ด ์™œ ๊ทธ๋Ÿฐ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•œ ๊ฐ€์ง€ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๋Š” clickonce๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐฐํฌํ•˜๋ฏ€๋กœ ๋ชจ๋“  ํ•ญ๋ชฉ์— ๊ฐ•๋ ฅํ•œ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹œํ—˜ํŒ ๋ฒ„์ „์€ ๊ฐ•๋ ฅํ•œ ์ด๋ฆ„์ด ์•„๋‹™๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€์˜ RestSharpSigned ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ .net ํ‘œ์ค€์„ ์ง€์›ํ•˜๋Š” ์‹œํ—˜ํŒ ๋ฒ„์ „์€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ•๋ ฅํ•œ ๋ช…๋ช…๋œ ๋ฒ„์ „๊ณผ ๊ฐ•๋ ฅํ•˜์ง€ ์•Š์€ ๋ช…๋ช…๋œ ๋ฒ„์ „์„ ๊ฐ–๋Š” ๊ฒƒ์€ ๊ฐ•๋ ฅํ•œ ๋ช…๋ช…๋œ ๋ฒ„์ „์— ์˜์กดํ•˜๋Š” ์ข…์†์„ฑ๊ณผ ๊ฐ•๋ ฅํ•˜์ง€ ์•Š์€ ๋ช…๋ช…๋œ ๋ฒ„์ „์— ์˜์กดํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ข…์†์„ฑ์ด ์žˆ๋Š” ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋Œ€์‹  ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์˜ ์ฃผ์š” ๋ฒ„์ „(SemVer์—์„œ ์ฃผ์š” ๋ฒ„์ „์€ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆด ๋•Œ๋งŒ ๋ณ€๊ฒฝ๋จ)์— ์„œ๋ช…ํ•˜๊ณ  ๊ณ ์ •ํ•œ ๋‹ค์Œ FileVersion์—์„œ ์ „์ฒด SemVer๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€(๊ฐ•๋ ฅํ•œ ์ด๋ฆ„์ด๋“  ์•„๋‹ˆ๋“ )๋ฅผ ๊ฐ–๊ฒŒ ๋˜๋ฉฐ ์ฃผ ๋ฒ„์ „ ๊ณ ์ •์€ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์ด ํ•„์š”ํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  SemVer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ํ˜ธํ™˜์„ฑ ์ธก๋ฉด์—์„œ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

.net ํ‘œ์ค€์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ด ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ์— ์ข‹์€ ์‹œ๊ธฐ์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ํŒจํ‚ค์ง€์— ์„œ๋ช…ํ•˜๊ณ  ํ‚ค๋ฅผ GitHub์— ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .net ํŒ€์€ ์•„๋ฌด ๊ฒƒ๋„ ํ•ด์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” PR์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@niemyjski develop ๋ถ„๊ธฐ๊ฐ€ ๋ชจ๋‘์—๊ฒŒ ํ‘œ์‹œ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜๋กœ๋„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

@niemyjski "Just"๋Š” ์ด ๊ฒฝ์šฐ์— ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋•๊ณ  ์‹ถ๋‹ค๋ฉด - ๋„์™€์ฃผ์„ธ์š”. Signed ํ”„๋กœ์ ํŠธ๋Š” ๋„ˆ๊ฒŸ์˜ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ์ „์ฒด ์†”๋ฃจ์…˜ ๋นŒ๋“œ์— ์‹คํŒจํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/dotnet/standard/issues/538
https://github.com/NuGet/Home/issues/6038

๋”ฐ๋ผ์„œ ์ˆ˜์ •๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ฑฐ๋‚˜ ๋ณ„๋„์˜ ์†”๋ฃจ์…˜๊ณผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ๋ชจ๋“  ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@alexeyzimarev ๋Š” ํ•˜๋‚˜์˜ csproj๋ฅผ ๊ฐ–๊ณ  ์„œ๋ช…ํ•˜๊ณ  ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „ ๋ฒˆํ˜ธ(์ฃผ ๋ฒ„์ „์œผ๋กœ)๋ฅผ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๊ฒŸ ๋ฐ ํŒŒ์ผ ๋ฒ„์ „์— ํ‘œ์ค€ SemVer๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒฝ์šฐ(์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•จ) ๊ตฌ์„ฑ์„ ํ†ตํ•ด ๋‹จ์ผ csproj๋กœ ๊ณ„์† ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๋ง๊ฐ€์กŒ๋Š”์ง€ ๊นจ๋‹ซ๊ธฐ ์ „์— ๋‚˜๋Š” ์›๋ž˜ ๋‚ด ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ StrongName ์†์„ฑ ๊ทธ๋ฃน์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ dotnet build -c StrongName์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

<PropertyGroup Condition="'$(Configuration)'=='StrongName'">
    <PackageId>Jsonics.StrongName</PackageId>
    <NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
    <PackageVersion>0.1.0-alpha</PackageVersion>
    <Optimize>true</Optimize>
    <AssemblyOriginatorKeyFile>Jsonics.snk</AssemblyOriginatorKeyFile>
    <SignAssembly>true</SignAssembly>
    <PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
</PropertyGroup>

์ œ๊ธฐํ•œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜ ์ด๊ฑฐ ๊ต‰์žฅํžˆ ์ข‹์•„.

์†์„ฑ ๊ทธ๋ฃน ์ œ์•ˆ์€ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‘ ๊ฐœ์˜ ํŒจํ‚ค์ง€๋ฅผ ์œ ์ง€ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ˜ผ๋ž€์„ ์ผ์œผํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ์„œ๋ช…์„ ํ”ผํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ํ•„์š”๋กœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ์„œ๋ช… ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@niemyjski ".net ํŒ€์—์„œ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค"์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ฒฐ๊ณผ์™€ ๊ทธ๋“ค์ด ์ด๊ฒƒ์„ ํ•˜๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๋“ค๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด๊ณ  ๊ทธ๋“ค์ด ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ๊ณต๊ฐœ์ ์œผ๋กœ ๋งํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค.
ํฌ๋Ÿผ๊ณผ ์—ฌ์œ . ๊ทธ๊ฒƒ์€ ์ผ์ข…์˜ ๋†๋‹ด์ด๋ฉฐ ์ œ๊ฑฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(
https://twitter.com/terrajobst/status/774752534682402817)..
๊ฐ•๋ ฅํ•œ ์ด๋ฆ„์˜ ์–ด์…ˆ๋ธ”๋ฆฌ... ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ์ด๋ฆ„์„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ง€์ •ํ•˜๊ณ 
๋†๋‹ด์œผ๋กœ ์„œ๋ช… snk๋ฅผ repo์— ๋‚จ๊ฒจ ๋‘์‹ญ์‹œ์˜ค. 16์ง„์ˆ˜ ํŽธ์ง‘๊ธฐ๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ
๊ฐ•๋ ฅํ•œ ์ด๋ฆ„ ์„œ๋ช…์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•„์š”ํ•œ ์‚ฌ๋žŒ์—๊ฒŒ๋งŒ ํ”ผํ•ด๋ฅผ ์ค๋‹ˆ๋‹ค.
์ข…์†์„ฑ์„ ์ทจํ•˜์ง€ ์•Š๋„๋ก ํŒจํ‚ค์ง€์— ์„œ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ฐ•ํ•œ ์ฐธ์กฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์„œ๋ช…๋˜์ง€ ์•Š์€ ํŒจํ‚ค์ง€์—์„œ ์„œ๋ช…๋œ ํŒจํ‚ค์ง€๋ฅผ ๋ชจ๋‘ ์„œ๋ช…ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์‹œ๊ฐ.

https://github.com/FoundatioFx/Foundatio/blob/master/src/Foundatio/Foundatio.csproj

๊ฐ์‚ฌ ํ•ด์š”
-๋ธ”๋ ˆ์ดํฌ ๋‹ˆ์—๋ฏธ์Šคํ‚ค

2017๋…„ 11์›” 1์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 1์‹œ 30๋ถ„ Alexey Zimarev ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

@niemyjski https://github.com/niemyjski "The .net
ํŒ€์ด ์ด๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค"? ๊ฒฐ๊ณผ์™€ โ€‹โ€‹๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ •ํ™•ํžˆ ๊ทธ๋“ค์€ ์ด๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/restsharp/RestSharp/issues/992#issuecomment-341197289 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AA-So94xh-jiEMniw0D2QaGQPgT9zfBfks5syLjDgaJpZM4PLH2m
.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์„œ๋ช…๋งŒ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถœ์‹œ๋ฉ๋‹ˆ๋‹ค. https://www.nuget.org/packages/RestSharp/106.0.0

์—ฌ๊ธฐ github์—์„œ ๋ฆด๋ฆฌ์Šค ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. :)

ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ

106.1.0์— ๋Œ€ํ•œ ๋ฆด๋ฆฌ์Šค ์ •๋ณด๋Š” ๋‹ค์Œ์„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
".NET Core์—์„œ ํ”„๋ก์‹œ ๋ฌธ์ œ ์ˆ˜์ •"

ํ•ด๋‹น ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฌด์—‡์„ ํฌํ•จํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
.NET Core 2.0 ํฌํŠธ(.NET Framework 4.6.1์—์„œ ์ œ๊ณต) ์ด์ „์—๋Š” ์ด์™€ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ–ˆ์œผ๋ฉฐ ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

 _restClient = new RestClient(DanskStatistikApi)
 {
         Proxy = WebRequest.GetSystemWebProxy()
 };
 _restClient.Proxy.Credentials = CredentialCache.DefaultCredentials;

.NET Core 2.0 ํ”„๋กœ์ ํŠธ์—์„œ ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ ์‘๋‹ต ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

System.PlatformNotSupportedException: Operation is not supported on this platform.

์š”์ฒญ์„ ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

var taskCompletion = new TaskCompletionSource<IRestResponse>();
var asyncHandle = _restClient.ExecuteAsync(request, r => taskCompletion.SetResult(r));
var response = (RestResponse)(await taskCompletion.Task);

์ด๊ฒฌ์žˆ๋Š” ์‚ฌ๋žŒ?

๊ณ ๋งˆ์›Œ,
ํ”„๋ ˆ๋“œ

.NET Core 2.0์— ๋Œ€ํ•œ ์ž‘์—… ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์Šคํƒ ์ถ”์ ์„ ํ™•์ธํ•˜๋ฉด ๊ธฐ๋ณธ ํ”„๋ก์‹œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•  ๋•Œ ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์˜ˆ์™ธ๊ฐ€ ์•„๋‹ˆ๋ผ .NET ์˜ˆ์™ธ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๋งž์Šต๋‹ˆ๋‹ค @alexeyzimarev , ์˜ˆ์™ธ๋Š” ์‹ค์ œ๋กœ System.Net.SystemWebProxy.GetProxy์—์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋นจ๋ฆฌ ๊ฑธ์—ˆ์Šต๋‹ˆ๋‹ค. :)

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ํ”„๋ก์‹œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var restClient = new RestClient(DanskStatistikApi)
{
     Proxy = new System.Net.WebProxy("your-proxy-url-goes-here", 8080)
};
restClient.Proxy.Credentials = CredentialCache.DefaultCredentials;

.NET Core 2.0์—์„œ 106.1.0์—์„œ 106.2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ๋Š”๋ฐ ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

System.PlatformNotSupportedException: Operation is not supported on this platform.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด ๋ฉ”์‹œ์ง€๋Š” System.Net.SystemWebproxy.GetProxy์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ œ ๊ฒฝ์šฐ์—๋Š” ํ”„๋ก์‹œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜์ง€ ์•Š๊ณ  ๋‚ด๋ถ€์ ์œผ๋กœ ์ž์ฒด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚ด๊ฐ€ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ์š”์ฒญ์— โ€‹โ€‹๋Œ€ํ•ด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” 106.1.0์„ ๋‹ค์‹œ ์กด๊ฒฝํ–ˆ๊ณ  ์ด๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋ก์‹œ ์„ค์ •์ด ์–ด๋–ค ์‹์œผ๋กœ๋“  ๋ช…์‹œ์ ์ด์–ด์•ผ ํ•˜๋Š” 106.2.0์—์„œ ์–ด๋–ค ๋ณ€ํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@voicebooth ์ด๊ฒƒ์€ #1061์—์„œ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

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