Runtime: ์œ ํ˜•๋ณ„ ์ƒ์† ๋ณด์•ˆ ๊ทœ์น™ ์œ„๋ฐ˜ : 'System.Net.Http.WebRequestHandler'. ํŒŒ์ƒ ์œ ํ˜•์€ ๊ธฐ๋ณธ ์œ ํ˜•์˜ ๋ณด์•ˆ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ์„ฑ๊ณผ ์ผ์น˜ํ•˜๊ฑฐ๋‚˜ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 08์›” 24์ผ  ยท  191์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/runtime

https://github.com/dotnet/corefx/issues/9846#issuecomment -242131706์— ๋”ฐ๋ผ ์ตœ์‹  System.Net.Http 4.1.1์„ ์‚ฌ์šฉํ•˜๋ฉด .NET 4.6.1 ์ธ ์›น์•ฑ์„ ์‹œ์ž‘ํ•  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์œ ํ˜•๋ณ„ ์ƒ์† ๋ณด์•ˆ ๊ทœ์น™ ์œ„๋ฐ˜ : 'System.Net.Http.WebRequestHandler'. ํŒŒ์ƒ ์œ ํ˜•์€ ๊ธฐ๋ณธ ์œ ํ˜•์˜ ๋ณด์•ˆ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ์„ฑ๊ณผ ์ผ์น˜ํ•˜๊ฑฐ๋‚˜ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

@davidsh ์—๊ฒŒ ์žฌํ˜„ ์ด๋ฉ”์ผ์„


์‹คํ–‰ ๊ณ„ํš ๋ฐ ์ƒํƒœ

[karelz์— ์˜ํ•ด ์—…๋ฐ์ดํŠธ ๋จ]

๋†’์€ ์ˆ˜์ค€์˜ ๊ณ„ํš :
A. CoreFX์˜ net46 ๋นŒ๋“œ์—์„œ HttpClientHandler ๊ตฌํ˜„์„ WinHTTP (WinHttpHandler) ๊ธฐ๋ฐ˜ ์Šคํƒ ๋Œ€์‹  ์›๋ž˜ .NET Framework HTTP ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค.
B. 4.1.0.0 OOB ํŒจํ‚ค์ง€์—์„œ ๋„์ž… ํ•œ HttpClientHandler์— ๋Œ€ํ•œ 8 ๊ฐœ์˜ ์ƒˆ๋กœ์šด API ๊ตฌํ˜„์„ ์ˆ˜์ •ํ•˜์—ฌ net46 ๋นŒ๋“œ์— ๋งž๊ฒŒ ์ž‘๋™ํ•˜๋„๋กํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ณ„ํš :

  1. [A]์˜ ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ ํ™•์ธ

    • [x] a. NetFX์—์„œ ํฌํŠธ HttpClientHandler (net46 ๋นŒ๋“œ์— ๋Œ€ํ•œ WinHttpHandler ๋นŒ๋“œ ์ข…์†์„ฑ ์ œ๊ฑฐ).

    • [x] b. APTCA๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ๋งŒ, ์œ ํ˜• ๋˜๋Š” ๋ฉ”์†Œ๋“œ์— ๋ณด์•ˆ ์†์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํƒ‘ ์†Œ์Šค ์ฝ”๋“œ์—์„œ์™€ ๋™์ผ).



      • [x] SecAnnotate ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์œ„์˜ ํด๋ ˆ์ž„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.-๊ฒฐ๊ณผ : ํ†ต๊ณผ



    • [x] c. ๋‘ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค (๋‹จ์ˆœํ™” ๋ฐ @onovotny) ์ˆ˜๋™ ํ…Œ์ŠคํŠธ-๊ฒฐ๊ณผ : ํ™•์ธ ๋จ

  1. [B]์˜ ํƒ€๋‹น์„ฑ ํ™•์ธ

    • [x] a. ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜์—†๋Š” ๋‚˜๋จธ์ง€ 2 ๊ฐœ์˜ API (DefaultProxyCredentials, MaxConnectionsPerServer)๋ฅผ ์กฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. -๊ฒฐ๊ณผ : ์•„๋ž˜ ๋ฒ„ํ‚ท 4.a์— ์žˆ์Šต๋‹ˆ๋‹ค.

  2. [A] ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ „์ฒด ํ…Œ์ŠคํŠธ (๋น„์šฉ : 1d)

    • [x] a. ๋งˆ์Šคํ„ฐ์—์„œ ๋ณ€๊ฒฝ

    • [x] b. ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋ณด๊ณ  ํ•œ ๋ชจ๋“  ~ 7 ๊ฐœ์˜ ์—”๋“œ-ํˆฌ-์—”๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ (์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋„์›€ ์š”์ฒญ, myget์—์„œ ๋งˆ์Šคํ„ฐ ํŒจํ‚ค์ง€ ์‚ฌ์šฉ ๋‹จ๊ณ„ ์ œ๊ณต)



      • [x] Windows ์„œ๋น„์Šค์˜ ์ž์ฒด ํ˜ธ์ŠคํŒ… ASP.NET Core-@ annemartijn0์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ( ์—ฌ๊ธฐ )


      • [x] Azure Storage API-@karelkrivanek์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ( ์—ฌ๊ธฐ )


      • [x] Raven.Database ํŒจํ‚ค์ง€ + ์ƒˆ๋กœ์šด HttpClientHandler ์‚ฌ์šฉ- @jahmai์— ์˜ํ•ด ๊ฒ€์ฆ ์—ฌ๊ธฐ )


      • [x] System.Net.Http์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์ข…์†์„ฑ- @pollax์— ์˜ํ•ด ๊ฒ€์ฆ ์—ฌ๊ธฐ )


      • [x] System.Net.Http์— ๋”ฐ๋ฅธ 4.6 ์ฝ˜์†” ์•ฑ- @MikeGoldsmith์— ์˜ํ•ด ๊ฒ€์ฆ ์—ฌ๊ธฐ )


      • [x] 4.6 ServiceBus๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Azure ์›น ์ž‘์—… (์ฝ˜์†” ์•ฑ)- @chadwackerman์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ( ์—ฌ๊ธฐ )


      • [x] 4.6 Azure Batch ์•ฑ- @chadwackerman์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ( ์—ฌ๊ธฐ )


      • [] @dluxfordhpf์˜ ์•„์ง ์„ค๋ช…๋˜์ง€ ์•Š์€ ์‹œ๋‚˜๋ฆฌ์˜ค



  3. [B]์˜ ์ „์ฒด ๊ตฌํ˜„ ๋ฐ ํ…Œ์ŠคํŠธ

    • [x] a. "์˜ฌ๋ฐ”๋ฅด๊ฒŒ"๊ตฌํ˜„ํ•  ์ˆ˜์—†๋Š” 4 ๊ฐœ์˜ API (CheckCertificateRevocationList, SslProtocols, DefaultProxyCredentials, MaxConnectionsPerServer)์˜ ๋””์ž์ธ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. 3 ๊ฐ€์ง€ ์„ ํƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. PlatformNotSupportedException์„ ๋˜์ง€๊ฑฐ๋‚˜ ์•„๋ฌด๊ฒƒ๋„ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, HttpClient๋ณ„๋กœ ์†์„ฑ์„ ๋„๋ฉ”์ธ ์ „์ฒด์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. -์˜ˆ



      • [x] i. ๊ฒฐ์ • ์‹คํ–‰ (๋น„์šฉ : 2d)


      • [x] ii. ๊ธฐ์ˆ ์ ์œผ๋กœ ์ค‘๋‹จ ๋  API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” NuGet (์˜ˆ : WCF?)์˜ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ๋ฌธ์˜ํ•˜์‹ญ์‹œ์˜ค.


      • ์ž ์žฌ์ ์œผ๋กœ ์˜ํ–ฅ์„๋ฐ›๋Š” 4 NuGet ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ-์†Œ์œ ์ž์—๊ฒŒ ์—ฐ๋ฝ ํ•จ- ์„ธ๋ถ€ ์ •๋ณด ๋ฐ ์ง„ํ–‰ ์ƒํ™ฉ ์ถ”์ 



    • [x] b. ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ ์žˆ๋Š” 5 ๊ฐœ์˜ API ๊ตฌํ˜„ (๋น„์šฉ : 3d)

    • [x] c. ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ตœ์ข… ํ…Œ์ŠคํŠธ-[3.b]์— ํฌํ•จ

  4. ์ตœ์ข… ํŒจํ‚ค์ง€ ๋ฐฐ์†ก

    • [x] a. ๋ฆด๋ฆฌ์Šค /1.1.0 ๋ธŒ๋žœ์น˜๋กœ ํฌํŠธ ๋ณ€๊ฒฝ

    • [x] b. ์ƒˆ ํŒจํ‚ค์ง€ ์ƒ์„ฑ-4.3.1

    • [ ] ์”จ. ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋ณด๊ณ  ํ•œ ~ 7 ๊ฐœ์˜ ์—”๋“œ-ํˆฌ-์—”๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค ๋Œ€๋ถ€๋ถ„์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค (์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋„์›€์„ ์š”์ฒญํ•˜๊ณ  myget ํ”ผ๋“œ์—์„œ 4.3.1 ์•ˆ์ •์ ์ธ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์ฐธ์กฐ)



      • [] Windows ์„œ๋น„์Šค์—์„œ ์ž์ฒด ํ˜ธ์ŠคํŒ… ASP.NET Core-@ annemartijn0


      • [x] Azure Storage API-@karelkrivanek


      • [] Raven.Database ํŒจํ‚ค์ง€ + ์ƒˆ๋กœ์šด HttpClientHandler ์‚ฌ์šฉ-@jahmai


      • [x] System.Net.Http์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์ข…์†์„ฑ- @pollax ( ์—ฌ๊ธฐ )


      • [] System.Net.Http์— ๋”ฐ๋ฅธ 4.6 ์ฝ˜์†” ์•ฑ-@MikeGoldsmith


      • [] 4.6 ServiceBus๋ฅผ ์‚ฌ์šฉํ•œ Azure ์›น ์ž‘์—… (์ฝ˜์†” ์•ฑ)


      • [] 4.6 Azure Batch ์•ฑ


      • [] @dluxfordhpf์˜ ์•„์ง ์„ค๋ช…๋˜์ง€ ์•Š์€ ์‹œ๋‚˜๋ฆฌ์˜ค


      • [x] KeyVault-@ Vhab ( ์—ฌ๊ธฐ )


      • [x] SignalR-@ tofutim ( ์—ฌ๊ธฐ )


      • [x] OwlMQ-@ JoeGordonMVP ( ์—ฌ๊ธฐ )



    • [x] d. - nuget.org์— ํŒจํ‚ค์ง€๋ฅผ ๊ฒŒ์‹œ https://www.nuget.org/packages/System.Net.Http/4.3.1


๋ณ€๊ฒฝ์˜ ์˜ํ–ฅ-์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ

๋‹ค์Œ์€ ์ œ์•ˆ ๋œ ์†”๋ฃจ์…˜์œผ๋กœ ์ธํ•œ ๊ธฐ์ˆ ์  ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๊ฐ๊ฐ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ๋™์ž‘์€ net46 / Desktop์—์„œ ์‹คํ–‰ํ•  ๋•Œ ํŠน์ •๋ฉ๋‹ˆ๋‹ค. .NET Core์—์„œ ์‹คํ–‰ํ•˜๋ฉด ๋™์ž‘์ด ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

  1. HttpClientHandler.CheckCertificateRevocationList (System.Net.Http 4.1์— ๋„์ž… ๋จ)

    • ์ƒˆ๋กœ์šด ๋™์ž‘ : PlatformNotSupportedException ๋˜์ง

    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : ๋Œ€์‹  ServicePointManager.CheckCertificateRevocationList ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (System.Net.Http 4.1-4.3์—์„œ์™€ ๊ฐ™์ด ๋‹จ์ผ HttpClientHandler ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „์ฒด AppDomain์— ์˜ํ–ฅ์„ ์คŒ).

  2. HttpClientHandler.SslProtocols (System.Net.Http 4.1์— ๋„์ž… ๋จ)

    • ์ƒˆ๋กœ์šด ๋™์ž‘ : PlatformNotSupportedException ๋˜์ง

    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : ๋Œ€์‹  ServicePointManager.SecurityProtocol ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (System.Net.Http 4.1-4.3์—์„œ์™€ ๊ฐ™์ด ๋‹จ์ผ HttpClientHandler ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „์ฒด AppDomain์— ์˜ํ–ฅ์„ ์คŒ).

  3. HttpClientHandler.ServerCertificateCustomValidationCallback (System.Net.Http 4.1์— ๋„์ž… ๋จ)

    • ์ƒˆ๋กœ์šด ๋™์ž‘ : HttpRequestMessage ์œ ํ˜•์˜ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ํ•ญ์ƒ null ์ธ ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : ServicePointManager.ServerCertificateValidationCallback

  4. HTTP / 2.0 ์ง€์› (System.Net.Http 4.1์— ๋„์ž… ๋จ)

    • ์ƒˆ๋กœ์šด ๋™์ž‘ : System.Net.Http (net46 = ๋ฐ์Šคํฌํ†ฑ ์šฉ)๋Š” Windows 10์—์„œ ๋” ์ด์ƒ HTTP / 2.0 ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : ๋Œ€์‹  System.Net.Http.WinHttpHandler NuGet ํŒจํ‚ค์ง€๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค.
    • ์„ธ๋ถ€:

      • HTTP / 2.0 ์ง€์›์€ Windows์—์„œ WinHTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ์ƒˆ๋กœ์šด CoreFx HTTP ์Šคํƒ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. .NET Framework 4.6์˜ ์›๋ž˜ HTTP ์Šคํƒ์€ HTTP / 2.0 ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. HTTP / 2.0 ํ”„๋กœํ† ์ฝœ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ƒˆ HttpClient ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ณ„๋„์˜ NuGet ํŒจํ‚ค์ง€ ์ธ System.Net.Http.WinHttpHandler๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•ธ๋“ค๋Ÿฌ๋Š” HttpClientHandler (HttpClient์˜ ์ผ๋ฐ˜ ๊ธฐ๋ณธ ํ•ธ๋“ค๋Ÿฌ)์™€ ๊ธฐ๋Šฅ์ด ๋น„์Šทํ•˜์ง€๋งŒ HTTP / 2.0 ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. .NET Core ๋Ÿฐํƒ€์ž„์—์„œ HttpClient๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ WinHttpHandler๋Š” ์‹ค์ œ๋กœ HttpClientHandler์— ๊ธฐ๋ณธ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ .NET Framework์—์„œ๋Š” ๋ช…์‹œ ์ ์œผ๋กœ WinHttpHandler๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • .NET Framework ๋Ÿฐํƒ€์ž„ (WinHttpHandler ํฌํ•จ)์„ ์‚ฌ์šฉํ•˜๋“  HttpClientHandler (๋˜๋Š” WinHttpHandler)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .NET Core ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ•˜๋“  ๊ด€๊ณ„์—†์ด Windows์—์„œ HTTP / 2.0 ํ”„๋กœํ† ์ฝœ์„ ์ž‘๋™ํ•˜๊ธฐ์œ„ํ•œ ์ถ”๊ฐ€ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
      • ํด๋ผ์ด์–ธํŠธ๋Š” Windows 10 1 ์ฃผ๋…„ ๋นŒ๋“œ (๋นŒ๋“œ 14393 ์ด์ƒ)์—์„œ ์‹คํ–‰ ์ค‘์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
      • HttpRequestMessage.Version ๋Š” ๋ช…์‹œ ์ ์œผ๋กœ 2.0์œผ๋กœ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (๊ธฐ๋ณธ๊ฐ’์€ ์ผ๋ฐ˜์ ์œผ๋กœ 1.1). ์ƒ˜ํ”Œ ์ฝ”๋“œ :
        ```c #
        var handler = new WinHttpHandler ();
        var client = new HttpClient (handler);
        var request = new HttpRequestMessage (HttpMethod.Get, "http://www.example.com");
        request.Version = ์ƒˆ ๋ฒ„์ „ (2, 0);

        HttpResponseMessage ์‘๋‹ต = await client.SendAsync (request);
        ```

area-System.Net bug

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

2 ๊ฐœ์›” ์ด์ƒ ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ณ ์ณ์ฃผ์„ธ์š”.

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

๋‚˜๋Š” ์˜ค๋Š˜ ๋‹ค๋ฅธ ๋ณด๊ณ ์„œ์—์„œ ์ด๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. / cc @ChadNedzlek

์ด๋Š”๋ฐ›์€ ํŽธ์ง€ํ•จ System.Net.Http.dll๊ณผ ๋น„๊ตํ•˜์—ฌ ๋Œ€์—ญ ์™ธ System.Net.Http.dll์˜ ๋ณด์•ˆ ํŠน์„ฑ์ด ๋ˆ„๋ฝ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ›์€ ํŽธ์ง€ํ•จ ๋ฒ„์ „์—๋Š” AllowPartiallyTrustedCallers๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ›์€ ํŽธ์ง€ํ•จ System.Net.Http.WebRequest.dll๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ฌ๋ฆฌ ์ฃผ์„์„ ๋‹ฌ์ง€ ์•Š๋Š” ํ•œ ๋ชจ๋“  ๊ฒƒ์ด SecurityTransparent๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

OOB System.Net.Http.dll์—๋Š” AllowPartiallyTrustedCallers๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ๋ชจ๋“  ๋ณด์•ˆ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ๋ฐ›์€ ํŽธ์ง€ํ•จ WebRequest.dll์ด OOB System.Net.Http.dll์„๋กœ๋“œ ํ•  ๋•Œ WebReqeuestHandler๊ฐ€ ํˆฌ๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•˜์ง€๋งŒ ํŒŒ์ƒ ๋œ HttpClientHandler๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์žฌํ˜„ :

  1. ํŒŒ์ผ> ์ƒˆ ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  2. ํ”„๋กœ์ ํŠธ ์†์„ฑ> ์„œ๋ช…> ๊ฐ•๋ ฅํ•œ ์ด๋ฆ„ ์„œ๋ช… ํ™œ์„ฑํ™”
  3. System.Net.Http.WebRequest์— ๋Œ€ํ•œ ์ฐธ์กฐ ์ถ”๊ฐ€
  4. System.Net.Http 4.1.0์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ธฐ๋ณธ์ ์œผ๋กœ new WebRequestHandler ();

ericstj๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ System.Net.Http 4.1.0์—์„œ ๋ณต๊ตฌํ•ด์•ผํ•˜๋Š” ์ค‘์š”ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ผ๊ด€์„ฑ์ด ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— .net4.6.1๊ณผ ํ•จ๊ป˜์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์ฒ˜๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต๊ณ  ํŠนํžˆ Azure KeyVault ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ ํŒ€์—๊ฒŒ ๊ณ ํ†ต ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๋Œ€์•ˆ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” .NET 4.5.2๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด์ „์— ๋‚˜์—ด๋œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. NET 4.6.x๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ข…์†์„ฑ ๊ฒ€์‚ฌ ๋น„ํ™œ์„ฑํ™”, System.Net.Http ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ, CSPROJ ํŽธ์ง‘ ๋ฐ ์ž๋™ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜ ๋น„ํ™œ์„ฑํ™”, ์ˆ˜์ • app.config, ์ผ๋ฐ˜์ ์œผ๋กœ VS๋ฅผ ์ •๋ฆฌ / ์ข…๋ฃŒํ•˜๊ณ  ์‚ฌ์†Œํ•œ ํ”„๋กœ์ ํŠธ์—์„œ๋„ System.Net.Http๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์ž์ฃผ ๋ณด์•˜์œผ๋ฏ€๋กœ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์‹ญ์‹œ์˜ค. ์ด ๋ฌธ์ œ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. Visual Studio์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋‹จ์ถ”๋กœ ํด๋ฆญํ•˜๊ณ  NuGet ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ์„ค์น˜๋œ ํƒญ์œผ๋กœ ์ด๋™ํ•˜์‹ญ์‹œ์˜ค.
  3. Microsoft.Net.Http๊ฐ€ ์•„๋‹Œ SYSTEM.Net.Http๋กœ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค.
  4. ์˜ค๋ฅธ์ชฝ ์ฐฝ์—์„œ ์„ค์น˜๋จ์ด 4.0.0.0์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฒ„์ „์„ 4.0.0.0์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  5. ์˜ค๋ฅธ์ชฝ ์ฐฝ์—์„œ ์ข…์†์„ฑ ๋™์ž‘์„ ์ข…์†์„ฑ ๋ฌด์‹œ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜์ง€ ์•Š์œผ๋ฉด Microsoft.IdentityModel.Clients.ActiveDirectory ํŒจํ‚ค์ง€๊ฐ€ ์ƒ๋‹นํžˆ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ๋˜๋ฉฐ ์ด๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  6. ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.์ด ๋ฒ„ํŠผ์€ ์‹ค์ œ๋กœ "๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝ"์ด๋ผ๋Š” ๋ ˆ์ด๋ธ”์ด ์ง€์ •๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  7. ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ฐฝ์—์„œ ๋‚˜์—ด๋œ ์œ ์ผํ•œ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด "Installing System.Net.Http"์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ข…์†์„ฑ ๋™์ž‘์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์€ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—ฌ๊ธฐ์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.
  8. ํ™•์ธ ๋Œ€ํ™” ์ƒ์ž์—์„œ ํ™•์ธ / ์˜ˆ / ๋™์˜๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์™„๋ฃŒ๋˜๋ฉด ํŒจํ‚ค์ง€ ๋ชฉ๋ก์— ๋‘ ๊ฐœ์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ™•์ธ ํ‘œ์‹œ๋Š” ์‚ฌ์šฉ์ค‘์ธ ๋ฒ„์ „ ์˜†์— ์žˆ์Šต๋‹ˆ๋‹ค.
  9. NuGet ์„ค์น˜ ํƒญ์—์„œ Microsoft.IdentityModel.Clients.ActiveDirectory ๋ชฉ๋ก์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  10. ์˜ค๋ฅธ์ชฝ ์„ธ๋ถ€ ์ •๋ณด ์ฐฝ์—์„œ ์ข…์†์„ฑ ๋™์ž‘์„ "๋ฌด์‹œ"๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜์ง€ ์•Š์œผ๋ฉด์ด ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ NuGet์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ›„์† NuGet ์ถ”๊ฐ€๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  11. Visual Studio์—์„œ File | Save All์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  12. ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์—์„œ์ด ํ”„๋กœ์ ํŠธ์˜ CSPROJ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ ๋‹ค.
  13. / Project / PropertyGroup * 1 (Project์˜ ์ฒซ ๋ฒˆ์งธ PropertyGroup ์š”์†Œ)์—์„œ ๋‹ค์Œ ํ–‰์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜์ด ์š”์†Œ๊ฐ€ ์ด๋ฏธ์žˆ๋Š” ๊ฒฝ์šฐ์ด ์š”์†Œ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.
    <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
  14. ํŒŒ์ผ์„ ์ €์žฅ ํ•œ ๋‹ค์Œ Visual Studio์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  15. ์ด ํ”„๋กœ์ ํŠธ์˜ app.config ํŒŒ์ผ์„ ์—ฝ๋‹ˆ ๋‹ค.
  16. System.Net.Http์— ๋Œ€ํ•œ ์ค„์„ ์ฐพ์•„ ํŽธ์ง‘ํ•˜์—ฌ 4.1.0.0 ๋Œ€์‹  4.0.0.0์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์„ ์ฐพ์œผ์‹ญ์‹œ์˜ค.
<dependentAssembly> 
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" /> 
</dependentAssembly> 

๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.

<dependentAssembly> 
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.0.0.0" /> 
</dependentAssembly> 
  1. ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์‹ญ์‹œ์˜ค. Azure Key Vault ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด bin / debug ๋˜๋Š” ์œ ์‚ฌํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ * .config ํŒŒ์ผ์ด ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Visual Studio๋ฅผ ์ข…๋ฃŒํ•˜์—ฌ ์ง€์šฐ๊ณ  ๋‹ค์‹œ ๋นŒ๋“œํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dluxfordhpf,์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์„ค๋ช… ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. System.Net.Http 4.0์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋ฉด .net4.6.1์—์„œ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์ง€๋งŒ ์—ฌ์ „ํžˆ ์œ ์ง€ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค (๋„ˆ๊ฒŸ ์ข…์†์„ฑ). ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฒ„์ „์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ๋””๋ ‰์…˜์€ System.Net.Http 4.1.0์— ์ถ”๊ฐ€ ๋œ ์ƒˆ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ Azure KeyVault ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ ํŒ€์—๊ฒŒ ๊ณ ํ†ต ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

@ChadNedzlek ์€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๊ณ  ๊ทธ๊ฐ€ ์ง์ ‘ ๋งŒ๋“  HttpClient๋ฅผ KeyVaultClient ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. WebRequestHandler๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ :

c# var handler = new HttpClientHandler(); // configure handler // eg: handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => errors == SslPolicyErrors.None; var client = new HttpClient(handler); var kvclient = new KeyVaultClient(async (authority, resource, scope) => "foo", client);

@davidsh System.Net.Http.dll์— AllowPartiallyTrustedCallers ๋‹ค์‹œ ๋„ฃ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. / cc @morganbr

@dluxfordhpf ๋‹จ๊ณ„์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
์ผ์‹œ์ ์ด๋ฉฐ ๊ณง ์ˆ˜์ •๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ์ง€ ๋งŒ ์—ฌ์ „ํžˆ ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

@terrajobst ์ด๊ฒƒ์€ ์ฐจ๋‹จ ์ƒ์‚ฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. NuGet์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์–ธ์ œ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์•„์‹ญ๋‹ˆ๊นŒ? ๊ฐ์‚ฌ!

์ด ๋ฌธ์ œ๋ฅผ ์ง์ ‘ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค. .Net์—์„œ ์˜์กด์„ฑ ์ง€์˜ฅ์œผ๋กœ ๋‚ด๋ ค ๊ฐ€์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ์‹œ์Šคํ…œ httpclient ??๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•œ ์ด์ „ ์˜๊ฒฌ ์ œ์•ˆ์œผ๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
new KeyVaultClient(GetAccessToken, new HttpClient(new HttpClientHandler()))
๊ทธ๊ฒƒ์„ ์–ป์€ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค ...

Microsoft์˜ Nuget ํŒจํ‚ค์ง€๊ฐ€ ์ ์  ๋” ์ตœ์‹  ๋ฒ„์ „์˜ System.Net.Http์— ์ข…์†๋จ์— ๋”ฐ๋ผ ๋ฌธ์ œ๋Š” ๋”์šฑ ์•…ํ™”๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Microsoft nuget ํŒจํ‚ค์ง€๋ฅผ ์ตœ์‹  ์‹œํ—˜ํŒ ๋ฒ„์ „์œผ๋กœ ์ง€์†์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ์œ ์ผํ•œ ์‚ฌ๋žŒ์€ ๋‚˜๋งŒ์ด ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ์‹  ๋ฒ„์ „์—์„œ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ํŒจํ‚ค์ง€ :

Microsoft.IdentityModel.Clients.ActiveDirectory
Microsoft.TeamFoundationServer.Client
Microsoft.VisualStudio.Services.Client.
....

์ด ํŒจํ‚ค์ง€๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ์ด์œ ๋ฅผ ์—ฌ์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. @terrajobst @coolcsh ์ด ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐ / ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ณต์žกํ•œ ์•ฑ ํ™˜๊ฒฝ์—์„œ ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€๋˜๋Š” ํŒจํ‚ค์ง€๊ฐ€ ๋นŒ๋“œ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

์šฐ๋ฆฌ๋Š” NuGet์—์„œ์ด ๊นจ์ง„ ๊ฒƒ ๋Œ€์‹  NET Framework์˜ System.Net.Http์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ„์— NuGet ๋ฒ„์ „์„ ๋™๊ธฐํ™”ํ•˜๊ณ , ์ž๋™ ๋ฐ”์ธ๋”ฉ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ , app.config๋ฅผ ์ˆ˜์ • / ํ™•์ธํ•ด์•ผํ•˜๋ฏ€๋กœ์ด ๋ฌธ์ œ๋Š” ํ„ฐ๋ฌด๋‹ˆ์—†๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋งค์šฐ ๋น„์Œ‰๋‹ˆ๋‹ค. ๋†€๋ž๊ฒŒ๋„ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ MS๋Š” KeyVault์— ๊ทธ๋‹ค์ง€ ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๊นŒ?

ActiveDirectory Nugget์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ ๋ฐ ์†์ƒ๋œ NuGet ํŒจํ‚ค์ง€๊ฐ€ .NET Standard๋ฅผ ๋Œ€์ƒ์œผ๋กœํ•˜๋Š” ์•ฑ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ด€๋ จ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ .NET Standard ๋Œ€์ƒ์—์„œ ๋˜๋Œ ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฏธ์•ˆํ•œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

์ œ์ถœํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์ ๊ทน์ ์œผ๋กœ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์† ์ง€์ผœ๋ด์ฃผ์„ธ์š”.

์ด๊ฒƒ์€ ์ €์—๊ฒŒ ์ค‘์š”ํ•œ ๋ฌธ์ œ๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋งŽ์€ ์ž์ฒด ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ bindingRedirect ํ˜ผ์ž ๋‘์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ํŒจํ‚ค์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ๋•Œ ๋งˆ๋‹ค ๋ฆฌ๋””๋ ‰์…˜์ด newVersion="4.1.0.0" ๋‹ค์‹œ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๋ง‰์„ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ˆ˜ํ‰์„ ์— ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

HTTP๋ฅผ ํ†ตํ•ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” HTTPS๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
newversion="4.0.0.0" ์„ค์ •์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

NETStandard 1.6.1์—์„œ ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์™œ?!

System.Net.Http 4.3.0์ด ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@LoulG ๊ทธ๋ž˜, ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋‘๋ ต์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ํŠธ์œ„ํ„ฐ์—์„œ @terrajobst ์™€ ์ด์•ผ๊ธฐ๋ฅผ

@LoulG๋Š” ์—ฌ๊ธฐ์„œ .net ์ฝ”์–ด 1.1์˜ ๋ฆด๋ฆฌ์Šค๋กœ ๋ชจ๋“  Nuget ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธ ํ–ˆ์œผ๋ฉฐ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

System.TypeLoadException : ์œ ํ˜•๋ณ„ ์ƒ์† ๋ณด์•ˆ ๊ทœ์น™ ์œ„๋ฐ˜ : 'System.Net.Http.WebRequestHandler'. ํŒŒ์ƒ ์œ ํ˜•์€ ๊ธฐ๋ณธ ์œ ํ˜•์˜ ๋ณด์•ˆ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ์„ฑ๊ณผ ์ผ์น˜ํ•˜๊ฑฐ๋‚˜ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

์ฒซ์งธ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด IdentityServer / IdentityServer3.AccessTokenValidation ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ,์ด ๋ฌธ์ œ๋ฅผ ์ฝ์Œ์œผ๋กœ์จ ๋‚˜๋Š” ๋‚ด ์ƒํ™ฉ t_t๋ฅผ ์ดํ•ดํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๋‹ค.

ํŽธ์ง‘ํ•˜๋‹ค :
OMG,
newversion = "4.0.0.0"์„ค์ •์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ €์—๊ฒŒ๋„ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

4.3์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ ํ•˜์ง€๋งŒ ๊ฐ™์€ ๋ฌธ์ œ : (((

์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ์—ฌ๊ธฐ์— ๋™์ผํ•œ ๋ฌธ์ œ

4.3.0์—์„œ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@terrajobst ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ ๋‚˜ @robertmclaws๊ฐ€ ์–ธ๊ธ‰ ํ•œ ๋” ๊นŠ์€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ์ˆ˜์ •์ด ๋กœ์ปฌ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ Azure ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์— ๋ฐฐํฌ ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ์ง€์†๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋•Œ๋•Œ๋กœ Azure๋ฅผ ํŒจํ‚ค์ง•ํ•˜๋ฉด ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์ด ๋ง๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ cspkg์˜ ์••์ถ•์„ ํ’€๊ณ  ์‹ค์ œ๋กœ ๋ฐฐํฌ๋˜๋Š” ํ•ญ๋ชฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ System.Net.Http.dll์˜ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

Snip

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ฉฐ์น  ๋™์•ˆ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Azure์— ๋ฐฐํฌ ํ•  ๋•Œ์ด ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ฐพ์•„์„œ ๋งค์šฐ ๊ธฐ๋ปค์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์ด ํฌํ•จ ๋œ .config ํŒŒ์ผ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์‹ค์ œ๋กœ CopyLocal์ด nuget ํŒจํ‚ค์ง€์—์„œ true์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ๊นจ์ง„ ๋ฒ„์ „์„ ๊ณ„์† ๋ฐฐํฌ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์ง€๋งŒ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์€ ์–ด์…ˆ๋ธ”๋ฆฌ์˜ ํ”„๋ ˆ์ž„ ์›Œํฌ ๋ฒ„์ „์ด ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค VM ๋‚ด๋ถ€์— ๋Œ€์‹ ๋กœ๋“œ๋˜๋„๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€!!! WTH?

<dependentAssembly> <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" /> </dependentAssembly>

๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋ฉด web.config๋„ ๋˜๋Œ์•„๊ฐ”์Šต๋‹ˆ๋‹ค. ์•„์นจ์— ์ด๊ฑธ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์•ผ ํ•ด์š”. ๋‹จ์„œ๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

AutoGenerateBindingRedirects๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ nuget ํŒจํ‚ค์ง€๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ์ด์ „์— ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ • ํ•œ ๋ฆฌ๋””๋ ‰์…˜์ด ์†์ƒ๋œ ๋ฒ„์ „์œผ๋กœ ๋‹ค์‹œ "์ˆ˜์ •"๋ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ์‹ค๋ง ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ์˜ ์ผ๋ถ€๋Š” ์ƒˆ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ ํ•  ๋•Œ AutoGenerateBindingRedirects๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ ์•ฑ์˜ ์ƒˆ ๋ฒ„์ „์„ ๋ฐฐํฌํ•ด์•ผํ•˜๋Š” ๋™์•ˆ ์ผ์ฃผ์ผ ๋„˜๊ฒŒ์ด ๋ง๋„ ์•ˆ๋˜๋Š” ์ผ์„ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ œ์•ˆ ํ•  ์ˆ˜์žˆ๋Š” ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์€ ๋ฐฐํฌ ํ•  ๋•Œ๋งˆ๋‹ค web.config๋ฅผ ํ™•์ธํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, CSPROJ์—์„œ ์ˆ˜๋™ ํŽธ์ง‘์„ ํ†ตํ•ด ๋ฐ”์ธ๋”ฉ ์—…๋ฐ์ดํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•œ ๋‹ค์Œ .config ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ์ˆ˜์ •ํ•˜๊ณ  ์ข…์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๋„๋ก GUI์—์„œ NuGet์„ ์žฌ๊ตฌ์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์ด๊ฒƒ์€ ์ฃผ์š” PITA์ž…๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์˜ค๋ž˜ ์ƒ์‚ฐ๋˜์–ด์„œ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํŒ€์€ ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ •๊ธฐ์ ์œผ๋กœ ์ €์ฃผ๋ฅผ ํ•ด์™”์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ์œ„์˜ ๋‚ด์šฉ์„ ๋”ฐ๋ฅด๋ฉด ์—ฌ์ „ํžˆ azure prod๊ฐ€ ์•„๋‹Œ ๋‚ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋งŒ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค. ์ตœ์‹  pub ํŒŒ์ผ์„ ํ™•์ธํ•œ ๊ฒฐ๊ณผ web.config๊ฐ€ ์œ„์— ํ‘œ์‹œ๋œ ๋ฒ„์ „์œผ๋กœ ๊ฒŒ์‹œ ๋œ ๋‚ด dll๊ณผ ํ•จ๊ป˜ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ๋‚ด ๋ฌธ์ œ๋Š” Azure Search ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฏ€๋กœ์ด ์ˆ˜์ •์€ ์œ ๋งํ•œ ๊ฒƒ์œผ๋กœ ์ž…์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์•ฝ๊ฐ„์˜ ์†์‹ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

2 ๊ฐœ์›” ์ด์ƒ ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ณ ์ณ์ฃผ์„ธ์š”.

์ด๊ฒƒ์€ ์™„์ „ํžˆ ์Šคํ†ฑ ์‰ฝ ๋ฌธ์ œ์ด๋ฉฐ ๋ฐ˜๋“œ์‹œ ํ•ด๊ฒฐ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

f # $ @์˜ ๊ฒฝ์šฐ, ์ด๋ฏธ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์–ด๋ฆฌ ์„๋‹ค.

@suprduprmn ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํ†ตํ•ฉ ํ•œ ๋‹ค์Œ ๋ชจ๋“  app.config ๋ฐ web.config ํŒŒ์ผ์—์„œ์ด๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.0.0.0" />

๊ทธ๋ž˜์•ผ๋งŒ ๋‚ด ์›น์•ฑ์ด Azure์—์„œ ์‹œ์ž‘๋˜๊ณ  System.Net.Http์— ์˜์กดํ•˜๋Š” Azure ์„œ๋น„์Šค์— ๋Œ€ํ•œ https ํ˜ธ์ถœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. YMMV์ด์ง€๋งŒ ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  @terrajobst ... ์ด์™€ ๊ฐ™์€ ์ฃผ์š” ๋ฌธ์ œ๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ณต์‹์ ์œผ๋กœ ๋ถˆํ‰ ํ•  ์ˆ˜์žˆ๋Š” ์ ์ ˆํ•œ ์žฅ์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜คํ”ˆ ์†Œ์Šค์˜ ํ–‰์šด์˜ ๊ทœ์น™์€ ์—ฌ๊ธฐ์— ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 1995 ๋…„๊ฒฝ Microsoft Showstopper 101 ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. "์ปค๋ฎค๋‹ˆํ‹ฐ"๊ฐ€ ๋„์šธ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ๊ณ ์ณ์•ผํ•˜๊ณ  ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด ๋„๊ตฌ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ค๊ณ„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ Microsoft ํ”„๋กœ์ ํŠธ์—์„œ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„๋ณด๊ณ  ์žˆ๋Š”๋ฐ ์™„์ „ํžˆ ์šฉ๋‚ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์— ํฐ ๊ฒฉ์ฐจ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋Ÿฐํƒ€์ž„์— ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์€ ๋งํ•  ๊ฒƒ๋„์—†๊ณ  ๋‹จ์ˆœํžˆ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ ๋นŒ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€์‘ํ•˜๋Š” ๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ XXXL์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์‘๋‹ต ์ดํ›„ 1 ๊ฐœ์›”์ด ์ง€๋‚ฌ์œผ๋ฉฐ ๋ฌธ์ œ๋Š” 3 ๊ฐœ์›” ์ด์ƒ ์—ด๋ ธ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์ด ์˜ํ–ฅ๋ ฅ์ด ํฐ ๋ฌธ์ œ์—๋Š” ์ด๊ฒƒ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

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

์•ˆํƒ€๊น๊ฒŒ๋„์ด ์‹œ์ ์—์„œ ์ œ๊ฐ€ ํ•  ์ˆ˜์žˆ๋Š” ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค (์ฆ‰, ์ง„์ง€ํ•˜๊ฒŒ ์‚ฌ๊ณผํ•˜๊ณ  ํ™•์‹ ํ•˜๋ฉฐ ์ง„์ง€ํ•˜๊ฒŒ ๋Œ€์šฐํ•˜๊ณ  ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค). ๋Œ€์•ˆ ์ œ์•ˆ์ด์žˆ๋Š” ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๊ท€์ž…๋‹ˆ๋‹ค.

@karelz ์ง€๊ธˆ ๋‹น์žฅ ๋ฌธ์ œ๋ฅผ ์‹ค์ œ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํŒ€์˜์ฃผ์˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๊ณ  ์‹ถ์ง€๋Š” ์•Š์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ์ด ๋ฌธ์ œ์˜ ๊ทผ๋ณธ ์›์ธ๊ณผ QA๋ฅผ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์‚ฌํ›„ ๋ถ„์„์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํฐ ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ฅผ ์ผ์œผ์ผฐ๊ณ  ํˆฌ๋ช…์„ฑ์ด ์–ด๋Š ์ •๋„ ์‹ ๋ขฐ๋ฅผ ์–ป์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@jahmai ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋„

์‘๋‹ต ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์€ System.Net.Http 4.0.0์„ ๊ฐ€๋ฆฌ ํ‚ค์ง€ ์•Š๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๋ถˆ๋Ÿ‰ํ•œ ํŒจํ‚ค์ง€ ๋ฒ„์ „์ด 2 ๊ฐœ ์ด์ƒ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ NuGet์„ ํ†ตํ•ด์ด ๋ฌผ๊ฑด์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜์ง€ ์•Š๋‚˜์š”?

ms ํŒ€ @ ํฌ์˜น

๋˜ํ•œ ์•„์‹œ๋‹ค์‹œํ”ผ์ด ๋ฌธ์ œ ์‚ฌ์ด์— HttpClient ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ๋„ˆ๋ฌด ์ž˜๋ชป ์„ค๊ณ„๋˜๊ณ  Microsoft.Security.Owin.Jwt ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ํ˜„์žฌ ์ข…์†์„ฑ์— ๋Œ€ํ•ด ์†์ƒ๋˜๊ณ  .NET Core์˜ ์ƒํƒœ ...

์ง€๊ธˆ์€ .NET ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋ ค๋ฉด ์—„์ฒญ๋‚˜๊ฒŒ ์‹ค๋ง์Šค๋Ÿฌ์šด ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ ๋ฐฐํฌ์—๋Š” 30 ๋ถ„ ๋™์•ˆ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฐ”์ธ๋”ฉ ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•ด์•ผํ•˜๋ฏ€๋กœ ํ”„๋กœ๋•์…˜์—์„œ ์•ฑ์ด ์†์ƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์˜ค๋žซ๋™์•ˆ ์˜นํ˜ธํ•ด์˜จ Microsoft๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์„ ์‚ฌ๋ž‘ํ•˜๊ณ , ์ „ํ˜€ ๊ฐ€ํ˜นํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...ํ•˜์ง€๋งŒ ํ˜„์žฌ์˜ ์งˆ์„ ํšŒ๋ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํž˜๋“  ์‚ฌ๋ž‘์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡์ด๋“ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ 4.0 ํŒจํ‚ค์ง€๋ฅผ ์ฐธ์กฐํ•˜๋Š” 4.3.1์„ ๋ฐฐ์†กํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋”๋ผ๋„. ์ œ๋ฐœ ๊ณงํ•˜์„ธ์š”.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. FWIW, ๋ธŒ๋ ˆ์ดํ‚น ์ฒด์ธ์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒํ•˜์„ธ์š”. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์‹ซ์–ดํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ๋ช‡ ๋‹ฌ ๋™์•ˆ ๊ณ ํ†ต์„ ์•ˆ๊ณ  ์‚ด์•„ ์™”๊ณ  ์ด์ œ ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์œผ๋ฏ€๋กœ API๋ฅผ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋”๋ผ๋„ ๋ช‡ ๊ฐ€์ง€ ๋” ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋ญ”๊ฐ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” 15 ๋…„ ๋™์•ˆ C # ์•ฑ์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ด๋Ÿฌ๋‹ˆํ•˜๊ฒŒ๋„ Microsoft์—์„œ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•จ์— ๋”ฐ๋ผ ์ด์ „์—๋Š” ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ๋˜ ๋‚ด๋ถ€๋ฅผ ๊นŠ์ด ํŒŒ๊ณ  ๋“œ๋Š” ๋ฐ ์ ์  ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ž˜๋ชปํ•˜๊ณ ์žˆ๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‹ ๋ขฐ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋˜ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด ์™œ ํฐ ๋ฌธ์ œ์ธ์ง€ ์ดํ•ดํ• ๋งŒํผ ๋˜‘๋˜‘ํ•˜์ง€๋„ ์•Š๊ณ  ๋‚ด ์•ฑ์—์„œ ๋” ๋งŽ์€ ์ œ์–ด ๊ถŒํ•œ์ด์—†๋Š” ์ด์œ ๋„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋Ÿฐํƒ€์ž„์— ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํฌ์ฐฉํ•˜์ง€ ๋ชปํ•œ ์ž„์˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋กœ ์ธํ•œ ์˜ค๋ฅ˜์— ๋†€๋ผ๊ณ  ์‹ถ๋‹ค๋ฉด Ruby๋กœ ์•ฑ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋น ๋ฅธ ์—…๋ฐ์ดํŠธ:
์ด๋ฒˆ ์ฃผ์— ์—ฌ๋Ÿฌ ๋ฒˆ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์˜ต์…˜์„ ๋ธŒ๋ ˆ์ธ ์Šคํ† ๋ฐํ•˜๊ณ  ์ž๊ธˆ์„ ํŒŒ์•…ํ–ˆ์Šต๋‹ˆ๋‹ค.
@CIPop ์€์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ตœ์šฐ์„  ๊ณผ์ œ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (๋‹ค์Œ ์ฃผ๋ถ€ํ„ฐ ๋‚˜๋จธ์ง€ ์—ฐ๋„ ๋™์•ˆ OOF๊ฐ€ ๋  @davidsh ์—์„œ ์ž‘์—…์„ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค).

์ƒํƒœ:

  • @onovotny ์˜ ์›๋ž˜ ์žฌํ˜„์„ ์žฌํ˜„ํ•˜๊ณ  ์ž‘์€ ์žฌํ˜„์„
  • ์šฐ๋ฆฌ๋Š” ์•„๋ž˜์˜ ํ•ด๊ฒฐ์ฑ… [3]์„ ์ถ”๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค-๋‚˜๋จธ์ง€ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์˜ต์…˜์˜ ๊ธฐ์ˆ ์  ํƒ€๋‹น์„ฑ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ์•„๋ž˜์˜ ๋ณ‘๋ ฌ ์†”๋ฃจ์…˜ [2]์—์„œ ์Šค์นด์šฐํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์†”๋ฃจ์…˜์ด ์ƒํƒœ๊ณ„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ณต๊ฐœ ์งˆ๋ฌธ์„ ์Šค์นด์šฐํŠธํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ์„ค๋ช…

  • 6 ์›”์— System.Net.Http 4.3.0.0โ€œOOBโ€๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

    • ์ฃผ๋ชฉํ• ๋งŒํ•œ ์ฝ˜ํ…์ธ  (์ด ์ปจํ…์ŠคํŠธ์˜ ๊ฒฝ์šฐ) : HttpCient, HttpClientHandler

    • ๊ณ ๊ฐ ๊ฐ€์น˜ : ์ธ์ฆ์„œ ์ง€์›, http2 ์ง€์›, ๋ฐ์Šคํฌํ†ฑ์˜ WinHttp ์Šคํƒ

    • ๋ฐ์Šคํฌํ†ฑ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํ”Œ๋žซํผ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํ†ฑ์˜ ๊ฒฝ์šฐ API ํ‘œ๋ฉด์— PartialTrust ์ฝ”๋“œ์— ๋Œ€ํ•œ SecurityAttributes๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค (APTCA = AllowPartialTrustCodeAttribute).

    • Desktop์—์„œ OOB ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ”Œ๋žซํผ์˜ ์ผ๋ถ€์ด๋ฉฐ APTCA๊ฐ€์žˆ๋Š” System.Net.Http 4.0.0.0์˜ ์‚ฌ์šฉ์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • System.Net.WebRequestHandler 4.0.0.0์€ Desktop์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

    • System.Net.Http์— ์˜์กดํ•˜๊ณ  APTCA๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ APTCA๋ฅผ ๊ฐ–๊ธฐ ์œ„ํ•ด์„œ๋Š” System.Net.Http๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    • System.Net.Http (InternalsVisibleTo๊ฐ€ ์žˆ์Œ)์˜ ๋‚ด๋ถ€ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • .NET Core์—์„œ ์›ํ•˜์ง€ ์•Š๋Š” "์ง€๋ฃจํ•œ"๋ ˆ๊ฑฐ์‹œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

  • OOB System.Net.Http 4.3.0.0๊ณผ System.Net.WebRequestHandler 4.0.0.0์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ (๊ฐ„์ ‘์ ์œผ๋กœ) ๊ฐ€์ ธ ์˜ค๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (3 ๊ฐœ ์ด์ƒ์˜ NuGet ํŒจํ‚ค์ง€ ๋ฐ ๋ฐ์Šคํฌํ†ฑ์˜ ASP.NET Core ์•ฑ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝค๋ณด๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์ง€ ์•Š๋„๋กํ•ฉ๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜

  1. [ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ] ์ˆ˜๋™ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜ โ€“ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณ„ ์ˆ˜๋™ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ (๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ํ†ตํ•ด) System.Net.Http 4.3.0.0์—์„œ 4.0.0.0์œผ๋กœ โ€“ ๋ฌด์—‡ / ์–ด๋””์„œ์ธ์ง€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ณ  ์•ฑ๋ณ„ ์ˆ˜๋™ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

    • ์ฐธ๊ณ  : ์˜ค๋Š˜์€ "ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•"์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  2. [ํ›„๋ณด] OOB ๊ฒฐ์ • ์‹คํ–‰ ์ทจ์†Œ โ€“ 4.3.1.0์„๋ฐ›์€ ํŽธ์ง€ํ•จ ๋ฐ์Šคํฌํ†ฑ 4.0.0.0์œผ๋กœ ์žฌ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

    • ๋‹จ์  : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ์˜์กดํ•˜๋Š” ๊ณ ๊ฐ์„ ๊นฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    • ์—ด๋ฆฐ ์งˆ๋ฌธ : ๋ฐ์Šคํฌํ†ฑ์˜ WCF ๋˜๋Š” ๊ธฐํƒ€ NuGet ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๋‚˜์š”?

  3. [ํ›„๋ณด] System.Net.Http์— ๋ณด์•ˆ ํŠน์„ฑ์„ ๋ฟŒ๋ฆฌ์‹ญ์‹œ์˜ค.

    • Desktop์— ๋Œ€ํ•ด์„œ๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ  (#if ์‚ฌ์šฉ), ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์ „ํŒŒํ•˜์ง€ ๋ง๊ณ  (Desktop ์ฐธ์กฐ์— ๋Œ€ํ•ด ์ปดํŒŒ์ผ), ๋‚˜์ค‘์— ์ ์šฉ ํ•  ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

    • ๋‹จ์  : System.Net.Http์˜ ๋ฐ์Šคํฌํ†ฑ ๊ตฌํ˜„๊ณผ ๊ด€๋ จ๋œ ์ผ๋ถ€ WebRequestHandler ์†์„ฑ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (๊ตฌํ˜„์„ ์ „ํ™˜ ํ•  ๋•Œ ์„ค๊ณ„ ์ƒ).

    • ๊ธฐ์ˆ  ๋…ธํŠธ : ๋น„๋™๊ธฐ ๋ฉ”์„œ๋“œ๋Š” SecurityTransparent (Roslyn ์ปดํŒŒ์ผ๋Ÿฌ ์ œํ•œ) ์—ฌ์•ผํ•˜๋ฏ€๋กœ (SecurityCritical) PInvoke๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ PInvoke ํ˜ธ์ถœ์— ๋Œ€ํ•ด SecuritySafeCritical ๋ž˜ํผ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค (๋‹ค์†Œ ์ถ”์•…ํ•˜์ง€๋งŒ ๊ฐ„๋‹จ ํ•จ).

    • ์—ด๋ฆฐ ์งˆ๋ฌธ : WebRequestHandler์˜ ๋‚ด๋ถ€ ์ข…์†์„ฑ์„ ์ƒˆ๋กœ์šด WinHttp ๊ธฐ๋ฐ˜ System.Net.Http์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

  4. [๊ฑฐ๋ถ€ ๋จ] ๋ฐ์Šคํฌํ†ฑ์—์„œ๋งŒ OOB WebRequestHandler

    • ๋‹จ์  : ๋ฌธ์ œ๋ฅผ ๋ฐ€์–ด ๋ถ™์ž…๋‹ˆ๋‹ค (์ผ๋ถ€ APTCA ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์ด์— ์˜์กด).

    • ๋‹จ์  : System.Net.Http์˜ ๋ฐ์Šคํฌํ†ฑ ๊ตฌํ˜„์— ํŠน์ •ํ•œ ์ผ๋ถ€ WebRequestHandler ์†์„ฑ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์„ค๊ณ„ ์ƒ) โ€“ ์œ„์˜ [3] ์ฐธ์กฐ

    • ๋‹จ์  : ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ NuGet์— ์ตœ์‹  ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋„๋ก ์ง€์‹œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  5. [CANDIDATE] System.Net.WebRequestHandler.dll์„ System.Net.Http NuGet ํŒจํ‚ค์ง€๋กœ ๋ฒˆ๋“ค๋ง

    • ์œ„์˜ [4]์™€ ๊ฐ™์€ 2 ๊ฐ€์ง€ ๋‹จ์  :



      1. ๋‹จ์  : ๋ฌธ์ œ๋ฅผ ๋ฐ€์–ด ๋ถ™์ž…๋‹ˆ๋‹ค (์ผ๋ถ€ APTCA ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์ด์— ์˜์กด).


      2. ๋‹จ์  : System.Net.Http์˜ ๋ฐ์Šคํฌํ†ฑ ๊ตฌํ˜„์— ํŠน์ •ํ•œ ์ผ๋ถ€ WebRequestHandler ์†์„ฑ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์„ค๊ณ„ ์ƒ) โ€“ ์œ„์˜ [3] ์ฐธ์กฐ



์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜ 2์˜ ์กฐํ•ฉ๊ณผ 4.3์„ 5.0์œผ๋กœ ์žฌ๋ฐฐ์†กํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๊ธฐ์ˆ ์ ์œผ๋กœ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ฏ€๋กœ ๋ฐ์Šคํฌํ†ฑ ์šฉ OOB WebRequestHandler.dll๋„ v5.0์œผ๋กœ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด WinHttp์—์„œ ๊ธฐ๋Šฅ์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๊ณ  ๋งคํ•‘๋˜์ง€ ์•Š๋Š” ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ SemVer๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…์ŠคํŠธ๋ฆผ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•˜์ง€๋งŒ ๋ฉ”์ด์ € ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ผ์ด ์•„๋‹ˆ๋ฉฐ 5.0์„ ํฌํ•จํ•˜์ง€ ์•Š๋„๋ก ํŒจํ‚ค์ง€๋ฅผ ์ƒ์œ„ ๋ฐ”์ธ๋”ฉ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋ง์€, ์ „์ฒด ํ”„๋ ˆ์ž„ ์›Œํฌ ํŒจํ‚ค์ง€ ๊ทธ๋ฃน์„ ๋™์ผํ•œ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋กœ ๋ฐฐ์†กํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์ง€๋งŒ a) ๊ธฐ์กด ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š๊ณ  ๋ชจ๋“  ๊ฒƒ์„ 4.0์œผ๋กœ ์ถœ์‹œํ–ˆ์„ ๋•Œ ์ด๋ฏธ ๋ง์ณค์Šต๋‹ˆ๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „ ๊ด€๋ฆฌ๋Š” ์ด๋ฏธ ๋ชจ๋“  ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค (System.Security.Claims 4.3 ํŒจํ‚ค์ง€๋Š” ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ๋นŒ๋“œํ•ด์•ผ ํ•  ๋•Œ ๋งค์šฐ ์งœ์ฆ๋‚˜๋Š” 4.0.2 dll์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค). ๊ทธ๋ž˜์„œ ํ”ผํ•ด๋Š” ์ด๋ฏธ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

dotnet / corefx # 3์€ ๋‚˜์—๊ฒŒ ์œ ์ผํ•œ ๊ทผ๋ณธ ์›์ธ ์†”๋ฃจ์…˜์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

@robertmclaws ์šฐ๋ฆฌ๋Š” ๋ฒ„์ „ ๋ณ€๊ฒฝ์ด ์ฐจ์ด๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค (์•ฑ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ์œ ์ž)์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํŒจํ‚ค์ง€์—์„œ "์ตœ์‹ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ"ํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ (๋งˆ์ด๋„ˆ ๋Œ€ ๋ฉ”์ด์ €) ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ธŒ๋ ˆ์ดํ‚น ์ž„ํŒฉํŠธ๋Š” ์ •ํ™•ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ๊ฒฐํ•ฉ ํ•  ๋•Œ๋งŒ "ํŒŒ๊ดด"ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์€ ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด์ด ๋ฌธ์ œ๊ฐ€ ์ฒ˜์Œ์— ๋น ์ ธ ๋‚˜๊ฐ„ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ ์ฝค๋ณด์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์กฐํ•ฉ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋‚˜์ค‘์— ์‚ฌํ›„์— ๋…ผ์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

๋‚˜๋Š” ๋ˆ„๊ตฌ๋„ ์ „์ฒด ํ”„๋ ˆ์ž„ ์›Œํฌ ๊ทธ๋ฃน ๋ฒ„์ „์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ ๋Œ€๋ถ€๋ถ„์˜ ๊ณ ๊ฐ์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์œผ๋ฉด ์ˆซ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์— ํˆฌํ‘œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋„์›€์ด๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์šฐ๋ฆฌ์˜ ๋ฉ”์‹œ์ง€๋ฅผ "์˜ˆ, ๋‹น์‹ ์€ ๋ง๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค-๊ทธ๊ฒƒ์ด ๋ฒ„์ „์ด ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค, ๋‹น์‹ ์€ ๋ฒ„์ „์„ ์ทจํ•  ๋•Œ ๋‹น์‹ ์ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ฒƒ์— ๋™์˜ํ•˜๋Š”์ง€ ๊นจ๋‹ซ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค."๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ”๊ฟ€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ IMO ์ ˆ๋ฆ„๋ฐœ์ด์ž…๋‹ˆ๋‹ค.

์˜๊ฒฌ์˜ ์ฐจ์ด๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ƒ๊ฐ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ upvotes / downvotes๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

  • ๐Ÿ‘ ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ €์˜ ์˜๊ฒฌ์— ๋™์˜ํ•œ๋‹ค๋ฉด, ์ฆ‰ 5.0์œผ๋กœ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ์ด ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊นจ์ง€๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์˜ํ–ฅ์„๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๐Ÿ‘Ž ๋‹น์‹ ์ด @robertmclaws์˜ ์ œ์•ˆ์— ๋™์˜ํ•˜๋Š” ๊ฒฝ์šฐ, ์ฆ‰, ๋‹น์‹ ์€ 5.0 ์˜์ง€ ๋„์›€๋ง ์‚ฌ๋žŒ๋“ค์€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ฝค๋ณด๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๋ถˆํ•„์š”ํ•œ ๊ณ ํ†ต์„ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋“ค์ด ์•„๋‹ˆ๋ผ, ํŒจํ‚ค์ง€ ๋ฉ€๋ฆฌํ•ด์•ผํ•œ๋‹ค ์„ ํ–‰์„ ์ดํ•ด๋กœ ์ฃผ์š” ๋ณ€๊ฒฝ์„ ์ถœํ•˜ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด 5.0์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ฒ˜์Œ ์—์ด ๋ฌธ์ œ์˜ ์›์ธ์— ๋Œ€ํ•ด ๋งค์šฐ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.
์žฅ์†Œ. ๋„ˆํฌ๋“ค์€ ์ •๋ง๋กœ ๋‚ด ๋จธ๋ฆฌ ์œ„๋กœ ๋งํ•˜๊ณ ์žˆ๋‹ค.

๋ฒ„์ „ ๋ฒˆํ˜ธ ์ผ์น˜์— ๋Œ€ํ•ด ์ƒ๋‹นํžˆ ์‹ ๊ฒฝ์„ ์“ฐ์ง€๋งŒ
์ด ๋ฌธ์ œ๋ฅผ ๋ฉˆ์ถ”๊ธฐ ์œ„ํ•ด ๊ฐ€์„œ ์ฒ˜๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ช‡ ๋‹ฌ ์ „์— ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๋ฅผ ์ฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?
System.Net.Http ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žฌ๊ฑด ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ฐฌ์„ฑํ•˜์—ฌ ์ผ๋ชฐ ์ค‘ ์ด์—ˆ์Šต๋‹ˆ๊นŒ?

2016 ๋…„ 12 ์›” 15 ์ผ ์˜คํ›„ 3:18์— "Karel Zikmund" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

@robertmclaws https://github.com/robertmclaws ์šฐ๋ฆฌ๋Š”
๋ฒ„์ „ ๋ณ€๊ฒฝ์€ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค (์•ฑ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์†Œ์œ ์ž) ์ผ๋ฐ˜์ ์œผ๋กœ ํŒจํ‚ค์ง€์—์„œ "์ตœ์‹ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ"๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.
๋ฒ„์ „์ด ์–ผ๋งˆ๋‚˜ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ (๋ถ€๋Œ€ ๋Œ€ ์ „๊ณต) ์ƒ๊ด€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋ž˜์„œ ์†๋ณด
์˜ํ–ฅ์€ ์ •ํ™•ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
"๋ธŒ๋ ˆ์ดํ‚น"ํšจ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด์ด ๋ฌธ์ œ๊ฐ€
์ฒซ ๋ฒˆ์งธ ์žฅ์†Œ-์šฐ๋ฆฌ๋Š” ๊ทธ ์ฝค๋ณด์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์กฐํ•ฉ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ
์‚ฌํ›„ ๋ถ„์„).

๋‚˜๋Š” ๋ˆ„๊ตฌ๋„ ์ „์ฒด ํ”„๋ ˆ์ž„ ์›Œํฌ ๊ทธ๋ฃน ๋ฒ„์ „์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์–ด๋Š ํ•œ ์ชฝ. ์†”์งํžˆ, ๋Œ€๋ถ€๋ถ„์˜ ๊ณ ๊ฐ์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์—ˆ๋‹ค๋ฉด
์ˆซ์ž ๋ณ€๊ฒฝ์— ํˆฌํ‘œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ฑฐ์˜ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋ฉ”์‹œ์ง€๋ฅผ "์˜ˆ, ๋‹น์‹ ์€
๊นจ์ง„-๊ทธ ๋ฒ„์ „์ด ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์–ด๋–ค ์ข…๋ฅ˜์˜
๋ฒ„์ „์„ ๋ณต์šฉ ํ•  ๋•Œ ๋™์˜ํ•˜๋Š” ๊ฒƒ "์€ IMO ์ ˆ๋ฆ„๋ฐœ์ด ๋ณ€๋ช…์ž…๋‹ˆ๋‹ค.

์˜๊ฒฌ์˜ ์ฐจ์ด๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ƒ๊ฐ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ฒŒ์‹œ๋ฌผ์— upvotes / downvotes๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค :

  • ๐Ÿ‘ ๋‚˜์—๊ฒŒ ๋™์˜ํ•œ๋‹ค๋ฉด, ์ฆ‰ ๋ธŒ๋ ˆ์ดํ‚น ์ฒด์ธ์ง€๋ฅผ ๋ฐฐ์†กํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ
    5.0์€ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋ถ€์„œ ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์˜ํ–ฅ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.
  • ๐Ÿ‘Ž @robertmclaws https://github.com/robertmclaws์— ๋™์˜ํ•˜๋Š” ๊ฒฝ์šฐ
    ์ฆ‰, 5.0์œผ๋กœ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐ์†กํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
    ์‚ฌ๋žŒ๋“ค์€ ํŒจํ‚ค์ง€์—์„œ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์–ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฏธ๋ฆฌ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
    ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ์ฝค๋ณด๋ฅผ ๊นจ๊ณ 
    ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ถˆํ•„์š”ํ•œ ๊ณ ํ†ต.

โ€”
๋Œ“๊ธ€์„ ๋‹ฌ์•˜ ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹  ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/dotnet/corefx/issues/11100#issuecomment-267446604 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAavtBRE24SlHsZHCYm5OhPbOGs6MfRzks5rIa68gaJpZM4JsdDX
.

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

@karelz ์—ฌ๊ธฐ์„œํ•˜๋ ค๋Š” ์ž‘์—…์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ "๋ฒ„์ „ 5.0"์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋‘์˜ ์‹œ๊ฐ„ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. ์—”์ง€๋‹ˆ์–ด๋ง์ด ์•„๋‹Œ ์‚ฌํšŒํ™”๋Š” GitHub์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” 5.0 ๋ฒ„์ „์„ ์˜ค๋Š˜ ์ถœ์‹œํ•˜๊ณ  ๋ชจ๋“  ์ž‘์€ ์ฃผ์„์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ผ ๋•Œ 6.0์„ ์ถœ์‹œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž (์•ฑ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ์œ ์ž)๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค."์™€ ๊ฐ™์€ ๋ฌธ๊ตฌ๋Š” ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด Perl 6, Python 3, Rails 3 & 4, Node.js 1,2,3,4,5 & 6์ด ์ผ์„ ์ชผ๊ฐœ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฆฌ๋“œ๋ฅผ ๋”ฐ๋ฅด์ง€ ๋ง์ž.

@dluxfordhpf @ciel ๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ์€ ์„ค๋ช…ํ•˜๊ธฐ ์–ด๋ ค์šด ์˜์—ญ์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ๋” ์ด์ƒ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š” "๋ ˆ๊ฑฐ์‹œ"์ฝ”๋“œ ์•ก์„ธ์Šค ๋ณด์•ˆ์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ทธ ๋ชฉ์ ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์š”์•ฝ์ž…๋‹ˆ๋‹ค.
https://msdn.microsoft.com/en-us/library/ee191569 (v = vs.110) .aspx
https://msdn.microsoft.com/en-us/library/dd233102(v=vs.110).aspx

์‹ค์ œ ๋ฌธ์ œ๋Š” @karelz ๊ฐ€ ํ•œ ์ˆ˜์ค€์˜ ๋ณด์•ˆ ํˆฌ๋ช…์„ฑ ์œ ํ˜• (๋ฐ์Šคํฌํ†ฑ ํ”„๋ ˆ์ž„ ์›Œํฌ์—์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ)์œผ๋กœ ๋œ ์ œํ•œ์ ์ธ ๋ณด์•ˆ ์ž์„ธ๋ฅผ ๊ฐ€์ง„ ์œ ํ˜•์—์„œ ํŒŒ์ƒํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค (์†์„ฑ์ด ๋ˆ„๋ฝ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ). OOB ๋ฒ„์ „). ์ด๊ฒƒ์€ ๊ฐœ๋…์œผ๋กœ์„œ์˜ CAS๊ฐ€ ๋ฐ์Šคํฌํƒ‘ .net ์ด์™ธ์˜ ๋‹ค๋ฅธ ๊ณณ์— ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์œ„ ๋ฌธ์„œ์˜ ์ปจํ…์ŠคํŠธ์—์„œ ์ƒ์† ๊ทœ์น™ ์— ๋Œ€ํ•œ์ด ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋‹ค์–‘ํ•œ ๋ณด์•ˆ ์ˆ˜์ค€์—์„œ ์œ ํ˜• ์ƒ์†์— ํ•„์š”ํ•œ ๊ทœ์น™์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ! ์ €๋Š” CAS์— ์ต์ˆ™ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์€ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.

.NET Core, .NET Standard ๋“ฑ์˜ ๋ชจ๋“  ๋ฒ„์ „ ๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์•ˆํ•  ๋•Œ al. ์ž‘๋…„์— (๊ทธ๋ฆฌ๊ณ  4.6.2์—์„œ ์‹คํ–‰๋˜๋Š” NuGet์—์„œ 4.3 ๋ฒ„์ „์˜ ์ƒˆ ์ฝ”๋“œ๋ฅผ ์ถœ์‹œํ•˜๋ฉด์„œ Microsoft๊ฐ€ ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์Œ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ๋งค์šฐ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋‹จ๋…์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  20 ๊ฐœ ์ด์ƒ์˜ OSS NuGet์„ ์ œ๊ณตํ•˜๋Š” ์‚ฌ๋žŒ์œผ๋กœ์„œ ํŒจํ‚ค์ง€, ๋‚˜๋Š” ์ „์ ์œผ๋กœ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  "๋ชจ๋‘ ์—…๋ฐ์ดํŠธ"๋ฅผ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์€ .NET์—์„œ ์•ฑ์„ ๋ง์น˜๊ณ  ๋Ÿฐํƒ€์ž„๊นŒ์ง€ ์•Œ ์ˆ˜์—†๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. SemVer๋ฅผ ๊ณ ์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ์˜จ์ „ํ•จ์„ ์œ ์ง€ํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฃผ ๋ฒ„์ „์„ ๋Š˜๋ฆฌ๋ฉด ๋ฌด์–ธ๊ฐ€๊ฐ€ ์†์ƒ ๋  ๊ฒƒ์ž„์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋ณ€ํ™”๋ฅผ ์‹ ํ˜ธ ํ•  ๋•Œ, ๋‹น์‹ ์€ ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด

์ œ์•ˆ ๋œ ์ˆ˜์ • ์‚ฌํ•ญ์€ ๋‚˜์—๊ฒŒ ์ข‹๊ฒŒ ๋“ค๋ฆฌ์ง€๋งŒ ํ…Œ์ŠคํŠธ ๋งคํŠธ๋ฆญ์Šค์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํ†ฑ .NET์—์„œ HttpClient๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ์ค‘์š”ํ•œ ์ผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ฝค๋ณด๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์‚ฌ์‹ค์ด์ง€๋งŒ ์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋„ค, ํ…Œ์ŠคํŠธ๋Š” ๋‚˜์—๊ฒŒ๋„ copout์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ์ƒ์œ„ 100 ๊ฐœ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ๊ณ„์† ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๊ฐ€ ํ…Œ์Šคํ„ฐ๋ฅผ ํ•ด๊ณ ํ•˜๊ณ  "์ปค๋ฎค๋‹ˆํ‹ฐ"๊ฐ€ ๋Œ€์‹ ์ด ๋ฌธ์ œ๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ซ๊ธฐ ์ „์— Microsoft๊ฐ€ ์‚ฌ์šฉํ–ˆ๋˜ ๊ธฐ๋ณธ์ ์ธ ์—”์ง€๋‹ˆ์–ด๋ง๊ณผ ๊ฐ™์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋”์ฐํ•˜๊ณ  ์งœ์ฆ๋‚˜๋Š” ์‹œ๊ฐ„ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค.

Windows ME์™€ Vista๋ฅผ ๊ฐ€์ ธ์˜จ '์˜ค๋ž˜๋œ'QA๊ฐ€ ์šฐ์ˆ˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ทธ๋“ค์„ ๋ชจ์š•ํ•˜๋ฉด ์ผ์ด ๋” ๋นจ๋ฆฌ ๋๋‚  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

2016 ๋…„ 12 ์›” 16 ์ผ ์˜ค์ „ 7:46์— "chadwackerman" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ํ…Œ์ŠคํŠธ๋Š” ๋‚˜์—๊ฒŒ๋„ copout์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์ƒ์œ„ 100 ๊ฐœ ์ถ”๊ฐ€
๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ๊ณ„์† ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
Microsoft๊ฐ€ ์ด์ „์—ํ–ˆ๋˜ ๊ธฐ๋ณธ ์—”์ง€๋‹ˆ์–ด๋ง๊ณผ ๊ฐ™์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ…Œ์Šคํ„ฐ๋ฅผ ํ•ด๊ณ ํ•˜๊ณ  "์ปค๋ฎค๋‹ˆํ‹ฐ"๊ฐ€์ด๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Œ์„ ๊นจ๋‹ซ๊ณ 
๋Œ€์‹  ๋ฌผ๊ฑด์„ ๊บผ๋‚ด์‹ญ์‹œ์˜ค. ์ •๋ง ๋”์ฐํ•˜๊ณ  ์งœ์ฆ๋‚˜๋Š” ์‹œ๊ฐ„ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค.

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

์•„๋ฌด๋„ ํฌ๋ฆฌ์Šค๋งˆ์Šค ํŒŒํ‹ฐ์— ์ดˆ๋Œ€ํ•˜์ง€ ์•Š๋Š” ํŒ€ ๋ฆฌ๋”๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
์‚ฌ๋žŒ๋“ค์„ ๋˜ฅ์ฒ˜๋Ÿผ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

2016 ๋…„ 12 ์›” 16 ์ผ ์˜ค์ „ 8์‹œ 26 ๋ถ„์— "chadwackerman" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ—›์†Œ๋ฆฌ๋ฅผ ๋ถ€๋ฅด๋ฉด ๋ฏฟ๊ฑฐ ๋‚˜ ๋ง๊ฑฐ๋‚˜ ์ผ์ด ๋” ๋นจ๋ฆฌ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹น์‹ ์€ ํ•œ ์ค„์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ๋ฐฑ๋งŒ์žฅ ๊ฐœ๋ฐœ ๊ด€๋ฆฌ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
10 ๋…„ ๋งŒ์— "์™€์šฐ์ด Github๋Š” ์ •๋ง ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆผ ์ด๋ชจํ‹ฐ์ฝ˜์„ ์ฐฌ์„ฑ / ์ถ•์†Œํ•˜๊ณ  ์„ค๋ฌธ ์กฐ์‚ฌ๋ฅผ ์—ด์–ด ๊ฒฐ์ •ํ•˜์ง€ ์•Š์•„๋„๋ฉ๋‹ˆ๋‹ค. "
๋ช‡ ๋‹ฌ๊ฐ„ ์ผํ•˜๊ณ  6 ๊ฐœ์›” ๋งŒ์—
๋‚ด๋ถ€ ์‹ฌ์‚ฌ ํšŒ์˜ ์‹œ๊ฐ„. ๊ทธ๊ฒƒ์€ ์ž˜๋ชป๋œ ์‚ฌํšŒ์  ์‹ ํ˜ธ์ด๋ฉฐ
์†”์งํžˆ ๋งํ•ด์„œ ์šฐ๋ฆฌ์—๊ฒŒ ํ’ˆ์งˆ์„ ๊ฐ€์ ธ๋‹ค ์ค€ BS ์—”์ง€๋‹ˆ์–ด๊ฐ€
์ƒˆํ„ด V ๋กœ์ผ“ ์ฒ˜๋Ÿผ์š” ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ณ ์˜ ์–ธ์–ด ํŒจํ‚ค์ง•์ด์—ˆ๋˜ .NET
์ด ๋ชจ๋“  ๊ฒƒ์ด ์˜จ๋ผ์ธ์— ์žˆ๊ธฐ ํ›จ์”ฌ ์ „์—์ด ๊ณต๊ฐ„์—์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์–ด๋ฆฌ ์„์Œ์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

๋˜๋Š” ๋ช‡ ๋‹ฌ ๋™์•ˆ ๋ฌด์‹œ๋˜์—ˆ๋˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด Microsoft๊ฐ€ ๋งˆ์นจ๋‚ด ์กฐ์น˜๋ฅผ ์ทจํ•˜๋„๋กํ•˜์—ฌ ์ „์ฒด ํŒ€์˜ ์ฐจ๋‹จ์„ ํ•ด์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šด ์‚ฌ๋žŒ์„ ์ฐพ์•˜์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Microsoft๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์™„์ „ํžˆ ์ค‘๋ณต ๋œ ๋ฒ„๊ทธ ๋ชฉ๋ก๊ณผ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Github๋Š” ์‚ฌํšŒ์  ๋ง๋„ ์•ˆ๋˜๋Š” ๋ฌด๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์–ด์จŒ๋“ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ’€ ์š”์ฒญ์„๋ฐ›์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณ ๊ฐ ์ง€์› ์Šค๋ ˆ๋“œ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ์—ฌ๊ธฐ์„œ ๋‚˜์œ ์ผ์„ํ–ˆ๊ณ  ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ๋“ฃ๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

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

2016 ๋…„ 12 ์›” 16 ์ผ ์˜ค์ „ 8:34์— "chadwackerman" [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด ์ „์ฒด ํŒ€์˜ ์ฐจ๋‹จ์„ ํ•ด์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šด ์‚ฌ๋žŒ์„ ์ฐพ์•˜์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ช‡ ๋‹ฌ ๋™์•ˆ ๋ฌด์‹œ๋˜์—ˆ๋˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด Microsoft๊ฐ€ ๋งˆ์นจ๋‚ด ์กฐ์น˜๋ฅผ ์ทจํ•˜๋„๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

Microsoft๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์™„์ „ํžˆ ์ค‘๋ณต ๋œ ๋ฒ„๊ทธ ๋ชฉ๋ก๊ณผ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
Github๋Š” ์‚ฌํšŒ์  ๋ง๋„ ์•ˆ๋˜๋Š” ๋ฌด๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ๋ฐ›์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์–ด์จŒ๋“ ์ด ๋ฌธ์ œ๋Š” ๊ณ ๊ฐ ์ง€์› ์Šค๋ ˆ๋“œ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž
์—ฌ๊ธฐ์„œ ๋‚˜์œ ์ผ์„ํ–ˆ๊ณ  ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ๋“ฃ๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๊ฐ€ "GitHub number_of_comments๋กœ ์ •๋ ฌ"์„ ์‚ฌ์šฉํ•˜์—ฌ @karelz ๊ฐ€ "์ž๊ธˆ ํŒŒ์•…"์ด๋ผ๊ณ  ์ •์ค‘ํ•˜๊ฒŒ ์œ ์ถœ ํ•œ ๊ฒƒ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. GitHub ์ด๋ชจ ์ง€ ์ฒ™๋„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌํšŒ์  ๊ฐ€์น˜๋„ ๊ฒ€์ฆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์˜ˆ,์ด ๋ฒ„๊ทธ๋Š”๋ณ„๋กœ ์˜€๊ณ , sev1์˜ ์ฃผ์š” ๊ฒฝ๋กœ๊ฐ€ ๊ณต๊ฐœ ๋œ ๊ฒƒ์„๋ณด๊ณ  ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ IMHO์˜ ์ง„์ •ํ•œ ๊ณ ํ†ต์€ NuGet์˜ ๋””์ž์ธ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  NuGet ํŒจํ‚ค์ง€๋Š” ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์†Œ๋น„์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ฐธ์กฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต๊ณผ ์ž˜๋ชป๋œ ์„ค๊ณ„์ด๋ฉฐ, ์‹คํŒจ์— ๋Œ€๋น„ํ•ฉ๋‹ˆ๋‹ค. ๋™๊ธฐํ™” ๋งˆ๋ฒ•์‚ฌ๋Š” ๊ธฐ๋ณธ ๋””์ž์ธ์ด ๋‚˜์  ๋•Œ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. NUGET์€์ด ๋ฒ„๊ทธ๊ฐ€ ๊ทธํ† ๋ก ๊ณ ํ†ต์Šค๋Ÿฌ์šด ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์šฐ๋ฆฌ๋Š” ์—ฐ๊ธฐ๊ฐ€ ๋‚˜๊ณ  Util์— ๋ถˆ์พŒํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋„ฃ๊ณ  ์žŠ์–ด ๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ์šฐ๋ฆฌ๋Š” ๋งค๋‹ฌ ์„ฑ์žฅํ•˜๋Š” 18 ๊ฐœ ์ •๋„์˜ ์†Œ๋น„ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘์—์„œ์ฃผ์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฒ„๊ทธ๊ฐ€ ๋งค์šฐ ๊ณ ํ†ต ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. NuGet์œผ๋กœ ์ธํ•ด ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋กœ ๊ฒฉ๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์—†์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์„ ๋งŒ์ง€๊ณ  ๊ณ„์† ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฐ์Šคํฌํƒ‘ / ์œˆ๋„์šฐ .NET์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฐ์ •์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. Microsoft .NET์ด Linux์— ์ถœ์‹œ๋œ๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ๋ˆ์€ Windows์— ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์ตœ๊ณ ์˜ ๊ฒฝํ—˜์„ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํŒ€์˜ ์ง€์†์ ์ธ ๋ถˆ๋งŒ์€ "์™œ์ด ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ

์ข‹์•„, ๋‚˜๋Š” ์กฐ๊ธˆ ๋” ๋ฉ€๋ฆฌ ๊ฐ€๊ณ ์žˆ๋‹ค. ์‹œ๊ฐ„๊ณผ ๊ด€์‹ฌ์„ ๊ฐ€์ ธ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ์—์„œ ์˜คํƒ€๋ฅผ ํ…Œ์ŠคํŠธ / ํ‰๊ฐ€ / ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”. ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๊ธฐ๊บผ์ด ๋„์™€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ (๋ฐ dotnet / runtime # 17786)๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ๋งŽ์€ ๊ณ ํ†ต์„์ฃผ๋Š” ์ด์œ ๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ Azure ์›น ์—ญํ• ์—์„œ Service Fabric ์„œ๋น„์Šค๋กœ ์ด๋™ํ•˜๊ณ  netcore / netstandard๋กœ ์ด๋™ํ•ด์•ผํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ „์ฒด ํ”„๋ ˆ์ž„ ์›Œํฌ์—์„œ ์‹คํ–‰ ์ค‘์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•ฑ.

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

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชจ๋“  ๊ณณ์—์„œ HttpClientHandler๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ž์ฒด ์ฝ”๋“œ ๋ณ€๊ฒฝ, ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ฌธ์ œ ์ œ๊ธฐ, ๋ฆฌํ”Œ๋ ‰์…˜๊ณผ ๊ฐ™์€ ํ•ดํ‚น ๋ฐ ํƒ€์‚ฌ ์ฝ”๋“œ ๋ณต์ œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์†”๋ฃจ์…˜์ด ๋ฌด์—‡์ด๋“  ์ƒˆ ํŒจํ‚ค์ง€๊ฐ€ ์ตœ์‹  HttpClient / HttpClientHandler๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ€์ ธ ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ผ์ด ์ž˜๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ๋ฅผ netstandard๋กœ ์˜ฎ๊ธฐ๊ณ ์ด ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐ ํ•  ์ˆ˜์žˆ๋Š” ๋” ๋งŽ์€ ํƒ€์‚ฌ ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ  ์‹ถ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— "์‹ค์ œ ์ˆ˜์ •"์ด ๊ณง ๋‚˜์˜ฌ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@dluxfordhpf ... ์ œ์•ˆ ๋œ ์†”๋ฃจ์…˜์„ ์ดํ•ดํ•˜๋„๋ก ๋‚ด๋ถ€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ข‹์€ ์„ค๋ช…์„ ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ...

https://github.com/dotnet/corefx/issues/11100#issuecomment -267394198์—์„œ ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ :

  • Http NuGet ํŒจํ‚ค์ง€ 4.1 / 4.3์€ .NET Framework์—์„œ Http 4.0์„ "์žฌ์ •์˜"ํ•˜์ง€๋งŒ ๋ณด์•ˆ ํŠน์„ฑ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ›„๋“œ ์•„๋ž˜์—์„œ ๋‹ค๋ฅธ OS ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (์˜ˆ : "ํฐ ๋ณ€ํ™”"+ ์ž ์žฌ์  ์ธ ์ฝ”๋„ˆ ์ผ€์ด์Šค (์ด ๋ฌธ์ œ์™€ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ๋˜์ง€๋Š” ์•Š์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ)).
  • WebRequestHandler๋Š” .NET Framework์˜ ์ผ๋ถ€์ผ ๋ฟ์ด์ง€ ๋งŒ Http 4.0์— ์˜์กดํ•˜๋ฉฐ Http์˜ ๋ณด์•ˆ ํŠน์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • NuGet์—์„œ Http 4.1 / 4.3์— ์˜์กดํ•˜๊ณ ๋ฐ›์€ ํŽธ์ง€ํ•จ 4.0 .NET Framework ๋ฒ„์ „์„ ์—ฌ๊ธฐ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋ฉด WebRequestHandler๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์„ค์ƒ๊ฐ€์ƒ์œผ๋กœ Http์—๋Š” .NET Standard 1.6์˜ ์ผ๋ถ€์ธ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด API๊ฐ€ ์žˆ์œผ๋ฉฐ ์ผ๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ด์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์ˆœํžˆ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ๊ทธ๊ฒƒ์„ ๋”์šฑ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ๋ช…๋ฐฑํ•œ ๋ง : "์˜ฌ๋ฐ”๋ฅธ ํ•ด๊ฒฐ์ฑ…"์€ ์—†์Šต๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ ์˜ํ–ฅ์ด ์ ์€ ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

@chadwackerman ... "๋ฒ„์ „ 5.0"์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์‹œ๊ฐ„ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. ์—”์ง€๋‹ˆ์–ด๋ง์ด ์•„๋‹Œ ์‚ฌํšŒํ™”๋Š” GitHub์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์‚ฌํšŒํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํˆฌํ‘œ๋ฅผ ๋ณด๋ฉด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋งŒ์žฅ์ผ์น˜์˜ ์˜๊ฒฌ์ด ์—†์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CoreFX ํŒ€ (.NET ๊ณ ๊ฐ๊ณผ 10 ๋…„ ์ด์ƒ์˜ ๊ฒฝํ—˜์„ ๊ฐ€์ง„)์ด " ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ๋ฉ”์ด์ € ๋ฒ„์ „์— ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š”๋‹ค "๋Š” ์˜๊ฒฌ์„

@chadwackerman ... ์˜ค๋Š˜์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  6.0 ..์„ ์ œ๊ณตํ•˜๋Š” 5.0 ๋ฒ„์ „์„ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์œ„์— ๋ฐฐ์น˜ ํ•œ ์˜ต์…˜ [2]์ž…๋‹ˆ๋‹ค (๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฆ„). ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋™์‹œ์— ํƒ๊ตฌํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์˜ ์˜ํ–ฅ์„ ๊ฐ์•ˆํ•  ๋•Œ " ์˜ˆ-๊ทธ๊ฒŒ ๋‹น์—ฐํžˆ ์˜ณ์€ ์ผ ์ž…๋‹ˆ๋‹ค.

@robertmclaws ... Microsoft๋Š” ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๋ฏฟ์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์ž์˜ ์ƒ๋‹น ๋ถ€๋ถ„์ด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ํ•ญ์ƒ ์™„๋ฒฝํ•˜๊ฒŒ ํ˜ธํ™˜๋˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”์ด์ € ๋ฒ„์ „์˜ ๋ฒ”ํ”„์—์„œ๋„ ์›ํ•˜๋Š” ๊ฒƒ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” .NET ์„œ๋น„์Šค ๋ฐ NuGet ํŒจํ‚ค์ง€ ๋ฐฐ์†ก์— ๋Œ€ํ•œ ์šฐ๋ฆฌ ํŒ€์˜ ์ˆ˜๋…„๊ฐ„์˜ ๊ฒฝํ—˜์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•ฉ๋‹ˆ๋‹ค.

@gulbanana ...์ด ์ฝค๋ณด๋Š” ์‹ค์ œ๋กœ ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ / ํ…Œ์ŠคํŠธํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์‚ฌ์‹ค์ด์ง€๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ›์•„์•ผํ•ฉ๋‹ˆ๋‹ค ...

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ค‘์š”ํ•œ ์ฝค๋ณด๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•˜์œผ๋ฏ€๋กœ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Http NuGett ํŒจํ‚ค์ง€์™€ ๊ด€๋ จ๋œ ๋‹ค๋ฅธ ์œ ์‚ฌํ•œ ์ฝค๋ณด๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์˜์—ญ์„ ์ข€ ๋” ์‚ดํŽด ๋ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@chadwackerman ... ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ์ƒ์œ„ 100 ๊ฐœ ํŒจํ‚ค์ง€ ์ถ”๊ฐ€ ...

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

@chadwackerman ... ๊ทธ๋ฆฌ๊ณ  "์ปค๋ฎค๋‹ˆํ‹ฐ"๊ฐ€์ด ๋ฌผ๊ฑด์„ ๋Œ€์‹  ๋ถ„๋ฅ˜ํ•˜๋„๋กํ•˜์„ธ์š” ...

์šฐ๋ฆฌ (CoreFX ๋ฐ CLR ํŒ€์— ๋Œ€ํ•ด ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)๋Š” GitHub๋ฅผ ํ†ตํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ œํ’ˆ ํ…Œ์ŠคํŠธ๋ฅผ ์•„์›ƒ์†Œ์‹ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์†กํ•˜๋Š” ์ œํ’ˆ์˜ ํ’ˆ์งˆ์— ๋Œ€ํ•ด ๋†’์€ ๊ธฐ์ค€์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

(์šฐ์—ฐํ•œ ํ•ซํ‚ค๊ฐ€ ๋๋‚ด๊ธฐ ์ „์— ๋‹ต์žฅ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค ... ๊ณ„์†ํ•˜๋ ค๋ฉด ...)

@chadwackerman ... Microsoft๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์™„์ „ํžˆ ์ค‘๋ณต ๋œ ๋ฒ„๊ทธ ๋ชฉ๋ก๊ณผ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

CoreFX ๋ฐ CoreCLR ํŒ€์—์„œ๋Š” ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. GitHub๋Š” ๋ชจ๋“  .NET Core์˜ ๊ธฐ๋ณธ ๋ฒ„๊ทธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋น„ ์˜คํ”ˆ ์†Œ์Šค ์ œํ’ˆ ( "์ „์ฒด".NET Framework ๋ฐ .NET Native)์€ ์ฃผ๋กœ ๋‚ด๋ถ€ ๋ฒ„๊ทธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@chadwackerman ... ์–ด์จŒ๋“ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ’€ ์š”์ฒญ์„๋ฐ›์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค ...

์œ„์˜ ๋ชจ๋“  ์šฐ๋ ค ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌ / ์„ค๋ช… ํ•  ์ˆ˜์—†๋Š” ํ’€ ๋ฆฌํ€˜์ŠคํŠธ (์ œ์ถœ์ž๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ๋™์˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํฌํ•จ)๋Š”๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ํ–ฅ์„ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ๋น ๋ฅธ ํ•ดํ‚น์„ ํ•  ์ˆ˜์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ณ ๊ฐ์˜ 20 % ์ด์ƒ์ด ๋ฐ”๋‹ฅ์— ์žˆ๋‹ค๋ฉด ... (์•„์ง) ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@chadwackerman ... ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๋Š” @karelz ๋„ˆ๋ฌด ์ •์ค‘๋กœ ์œ ์ถœ ๋œ ๊ฒƒ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด "์ผ์ข…์˜ GitHub์˜์— NUMBER_OF_COMMENTS์—์„œ"์‚ฌ์šฉ "์ž๊ธˆ ์•Œ์•„." ...

์ฒซ์งธ, number_of_comments๋Š” ์šฐ๋ฆฌ๊ฐ€์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด๋Š” ์ธก์ • ํ•ญ๋ชฉ์ด ์•„๋‹™๋‹ˆ๋‹ค (๋ˆ„๊ตฐ๊ฐ€๊ฐ€ "์ˆ˜๋™์œผ๋กœ"์ง€๋ถ•์—์„œ ๋ฒ—์–ด๋‚œ ๊ฒƒ์„ ์•Œ์•„ ์ฐจ๋ฆฌ์ง€ ์•Š๋Š” ํ•œ). ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ "ํŽ€๋”ฉ"๊ณผ๋Š” ์•„๋ฌด๋Ÿฐ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ๊ณ ๊ฐ์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ชจ๋“  ๊ฒƒ์—์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ž…๋‹ˆ๋‹ค. ํˆฌํ‘œ ์ˆ˜ ๋˜๋Š” ๊ณ ๊ฐ ๋ถˆ๋งŒ์กฑ (GitHub, Twitter, ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ๋Œ“๊ธ€ ๋“ฑ)์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฒ„๊ทธ๋Š” ๋‚ด ๋ ˆ์ด๋”์— "์ค‘์š”ํ•œ ๊ณ ๊ฐ ๋ถˆ๋งŒ์กฑ"(์ด ์Šค๋ ˆ๋“œ์˜ ๋‹ค๋ฅธ MS ์ง์›์ด ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐ ํ•จ)์œผ๋กœ ๋–  ์˜ฌ๋ž๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๊ฐœ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์ž๊ธˆ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•˜๊ฒŒ ๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋Š” ๋ณด์•ˆ ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ ๊ณ ๊ฐ์˜ 20 % ์ด์ƒ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์—†์ด ํ˜„์žฅ์— ์žˆ์Šต๋‹ˆ๋‹ค.
BTW : ๋ชจ์š•์„ ๋˜์ง€๋Š” ๊ฒƒ์€ ์†๋„๋ฅผ ๋†’์ด๊ฑฐ๋‚˜ ์˜์‚ฌ ๊ฒฐ์ •์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@dluxfordhpf ... ์˜คํƒ€์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ํ…Œ์ŠคํŠธ / ํ‰๊ฐ€ / ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š” / ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ด๋“  ๊ธฐ๊บผ์ด ๋„์™€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค ...

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ์•ˆ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋” ๋งŽ์€ ์ข…๋‹จ ๊ฐ„ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์ค€๋น„๋œ (๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์žฌํ˜„์— ๋Œ€ํ•ด ๊ฒ€์ฆ ๋œ) ๋„์›€์„๋ฐ›์„ ์ˆ˜์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ์—”๋“œ-ํˆฌ-์—”๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค ๋งŒ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค๋ฅธ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ณ ์žฅ๋‚œ ์ƒํ™ฉ์„ ํ”ผํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@jahmai ...ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ ๊ฐœ๋ฐœ์ž๋“ค์€ ์‹ค์ˆ˜๋กœ app.config๋ฅผ ๋˜๋Œ๋ฆฌ๊ณ , nuget ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ , AutoGenerateBindingRedirects์™€ ์‹ธ์šฐ๋ฉด์„œ ๋Š์ž„์—†์ด ๋ฌด์–ธ๊ฐ€๋ฅผ ๊นจ๋œจ๋ฆฌ๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค (๋น„ํ™œ์„ฑํ™”๋Š” ์•…๋ชฝ์ด์—ˆ์Šต๋‹ˆ๋‹ค). ...

๊ฐ์‚ฌ! ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋“ฃ๊ณ  ์ดํ•ดํ•ด์•ผํ•˜๋Š” ์ผ์ƒ์ ์ธ ๊ฐœ๋ฐœ ์ž‘์—…์— ๋Œ€ํ•œ ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„ ๋ช…ํ™•ํžˆํ•˜๋Š” ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. VS ํˆด๋ง๊ณผ์˜ ์ฝค๋ณด๋กœ ์ธํ•ด ์ž‘์—…ํ•˜๊ธฐ์— ์ง„์ •ํ•œ ์•…๋ชฝ์ด๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ๊ณ„ํš ๋ฐ ๋‚ ์งœ (ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๋Š”๋Œ€๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค)๋ฅผ ํ™•์ • ํ•  ๋•Œ์ด๋ฅผ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@jahmai ... ์ƒˆ ํŒจํ‚ค์ง€๊ฐ€ ์ตœ์‹  HttpClient / HttpClientHandler๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ€์ ธ ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...

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

์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” ๊ธฐ์ˆ ์  ์ธ ๋…ผ์˜๋ฅผํ•ฉ์‹œ๋‹ค.

๋น ๋ฅธ ์—…๋ฐ์ดํŠธ:
์†”๋ฃจ์…˜ [3] ์œ„์— ์„ค๋ช… ๋œ " System.Net.Http์˜ Sprinkle Security ์†์„ฑ "์€ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฏ€๋กœ (6w +) ๋‚ด๋ถ€ ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋‹ค์‹œ ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ 4.0 ๋ฒ„์ „์—์„œ ์›๋ž˜ Http ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + ๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์„ ์„ ๋‹คํ•ด 8 ๊ฐœ์˜ ์ƒˆ๋กœ์šด API๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค (์ผ๋ถ€๋Š” ๊ธฐ์ˆ ์ ์œผ๋กœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์ค‘๋‹จ ๋  ์ˆ˜ ์žˆ์Œ). http2 ์ง€์› ๋ฐ ๊ธฐํƒ€ "์ƒˆ๋กœ์šด WinHttp ์Šคํƒ"๊ธฐ๋Šฅ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ํŠน์ˆ˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (๊ธฐ์ˆ ์ ์œผ๋กœ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด์ง€๋งŒ ์ƒˆ๋กœ์šด 4.1 / 4.3 ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์— ์˜์กดํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋งŽ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค). .
๋น„์šฉ์€ ์ง€๊ธˆ๊นŒ์ง€ ์ƒ๋‹นํžˆ ๋‚ฎ์€ ๊ฒƒ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ์ตœ์ข… ๊ณ„ํš์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์ „์— ์—ฌ์ „ํžˆ ์ถ”์ ํ•˜๊ณ  2 ๊ฐœ์˜ ์†์‹ค ๋ (API) ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ ์–ด๋„ 2 ๊ฐœ์˜ API์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ "ํฅ๋ฏธ๋กœ์šด"ํ˜ธํ™˜์„ฑ ๊ฒฐ์ •์„ ๋‚ด๋ ค์•ผํ•˜์ง€๋งŒ, ์ˆ˜์ •์ด ๋ฆด๋ฆฌ์Šค๋˜๋Š” ์‹œ๊ฐ„์„ ๋Šฆ์ถ”์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

BTW : ์†”๋ฃจ์…˜ [2] " OOB ์‹คํ–‰ ์ทจ์†Œ ๊ฒฐ์ • "์€ ์›๋ž˜ ์˜ˆ์ƒํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค (์˜ˆ : .NET Standard 1.6์„ ๊นจ๊ณ  ์žฅ๊ธฐ์ ์ธ ํ˜ผ๋ž€๊ณผ ์„ค๋ช…์„ ์ƒ์„ฑ ํ•จ). ์œ„์˜ ๋น„์šฉ์ด ๋„ˆ๋ฌด ๋น„์‹ธ๊ฑฐ๋‚˜ ๋ถˆํ•ฉ๋ฆฌํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ๋กœ์„œ๋Š” ์ตœํ›„์˜ ์ˆ˜๋‹จ์œผ๋กœ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ ์—ฃ์ง€ ์ผ€์ด์Šค๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์žˆ๋‹ค๋ฉด ๋‹ค์Œ ์‚ฌํ•ญ์„ ํ™•์ธํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/gulbanana/repro-netstandard-httpclient

์ด ์†”๋ฃจ์…˜์€ ํ˜„์žฌ vs2017rc์—์„œ netfx ๋ฐ netstandard๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด system.net.http์˜ ์ถฉ๋Œ ๋ฒ„์ „์ด ๋ฐœ์ƒ ํ•จ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด OOB ์ผ๊ณผ ์–ด๋–ป๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@karelz ์†”์งํžˆ ์—ฌ๊ธฐ์— ๊ฐ์‚ฌํ•˜๊ณ  ์†”์งํžˆ ์กด๊ฒฝํ•˜์ง€๋งŒ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ฒฝ์ ์„ ์šธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

CoreFX ํŒ€ (.NET ๊ณ ๊ฐ์— ๋Œ€ํ•œ 10 ๋…„ ์ด์ƒ์˜ ๊ฒฝํ—˜์„ ๋ณด์œ ํ•œ)์„ ์‹ ๋ขฐํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ "์‚ฌ๋žŒ๋“ค์ด ์ฃผ ๋ฒ„์ „์— ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š”๋‹ค"๋ผ๋Š” ์˜๊ฒฌ์„ ... NET ์„œ๋น„์Šค ๋ฐ NuGet ๋ฐฐ์†ก์— ๋Œ€ํ•œ ์šฐ๋ฆฌ ํŒ€์˜ ์ˆ˜๋…„๊ฐ„์˜ ๊ฒฝํ—˜์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ...

์ด๊ฒƒ์ด ์–ด๋–ค ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜์ธ์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ด์™€ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฌธ์ œ์˜ ํ•œ๊ฐ€์šด๋ฐ์„œ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ๊นŠ์ด์žˆ๋Š” ๋ฏธ๋ฌ˜ํ•œ ๊ฒฝํ—˜์ด์žˆ๋Š” ํŒ€ ์ดํ•ด๋ฅผ ์ฃผ์žฅ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

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

Amazon Web Services๋Š” ์ง€๋‚œ ์—ฌ๋ฆ„ ๋ชจ๋“  ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์™„์ „ํ•œ .NET Core ์ง€์›์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ๋Š” ๊ธฐ์ค€์„ netstandard 1.5์—์„œ 1.3์œผ๋กœ ๋‚ฎ ์ถฅ๋‹ˆ ๋‹ค. ํ•œํŽธ Azure ํŒ€์€ Blob์„ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.

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

์†”์งํ•˜๊ณ  ์„ค๋ช… ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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

๋‘ ๊ฐ€์ง€ ํฐ ๊ฐ€์ •์„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ฐ€์ • : ๋ฐฐ์†ก ์ „์— ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค (์ผ๋ช… ์ค‘๋‹จ์œผ๋กœ ์ดํ•ด ๋จ).

    • ์ด๊ฒƒ์€ "์˜๋„ํ•˜์ง€ ์•Š์€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ"ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด์ด ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋„ค, ๊ฐ€๋”์€ ์‹ค์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค :(. ์ค‘์š”ํ•œ ์ธก์ • ๊ธฐ์ค€์€ IMO : ๋น ๋ฅธ ๋ฐ˜์‘ (์ง€๊ธˆ๊นŒ์ง€์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๊ฐ€์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค) ๋ฐ ๊ทธ๋Ÿฌํ•œ ์‹ค์ˆ˜์˜ ๊ฐ์†Œ / ๋‚ฎ์€ ๋นˆ๋„์ž…๋‹ˆ๋‹ค.

  2. ๊ฐ€์ • : ๋ฒ„์ „ ๊ด€๋ฆฌ ์ „๋ฌธ๊ฐ€๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€ํ†  ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ (๊ทธ๋ ‡์ง€ ์•Š์Œ) ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์€ ์‹ค์ˆ˜๋ฅผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (๊ณต์ƒ ๊ณผํ•™).

    • ์ด ํŠน์ • ์‚ฌ๋ก€์—์„œ System.Net.Http API ๊ณ„ํš (๋ฐ์Šคํฌํ†ฑ ์šฉ ์ƒˆ๋กœ์šด 8 ๊ฐœ API)์€ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ „๋ฌธ๊ฐ€์— ์˜ํ•ด ์ถœ์‹œ๋˜๊ธฐ ์ „์— ์ƒ์œ„ ์ˆ˜์ค€์—์„œ ๊ฒ€ํ† ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์˜ต์…˜์— ๋Œ€ํ•œ ์ œ์•ˆ๊ณผ ์ง€์นจ์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ํŒŒ๊ดด ์ˆ˜์ค€์€ ๋ˆ„๊ตฌ๋„ (์ง€์—ญ ์ „๋ฌธ๊ฐ€๋„ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ „๋ฌธ๊ฐ€๋„ ์•„๋‹˜) ๋ฏธ๋ฆฌ ์ธ์‹ํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ ํƒํ•œ ์†”๋ฃจ์…˜์ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์šฐ๋ฆฌ์˜ ๊ฒฝํ—˜์„ ๋ฌด์‹œํ•จ์œผ๋กœ์จ ๊ธฐ๋ณธ์ ์œผ๋กœ " (.NET ํŒ€)์ด ํฐ ์‹ค์ˆ˜ (์ด ๋ฒ„๊ทธ)๋ฅผ ์ €์ง€๋ฅด๋ฉด ๊ณผ๊ฑฐ ์ด๋ ฅ๊ณผ ๊ณ ๊ฐ์— ๋Œ€ํ•ด์„œ๋„ ์ž์‹ ์„ ์ „๋ฌธ๊ฐ€๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์—†๋‹ค๋Š” ์ ์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์€ IMO์˜ ํฐ ๋ง์น˜์ด๋ฉฐ ํ˜„์‹ค์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ / ํŒ€์€ ๊ฐ€๋” ์‹ค์ˆ˜๋ฅผํ•ฉ๋‹ˆ๋‹ค (์ด๊ฒƒ์ฒ˜๋Ÿผ). ๊ทธ๋ ‡๋‹ค๊ณ  ์ฃผ๋ณ€ ์ง€์—ญ (๋˜๋Š” ํŠน์ • ์ง€์—ญ)์˜ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜๊ธฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ๊ทธ๋“ค์ด ์‹ค์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐฐ์šฐ๊ณ  ๋ฏธ๋ž˜์— ๋” ์ž˜ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์ž…๋‹ˆ๋‹ค.

@chadwackerman ... "์˜ˆ์‚ฐ"๊ณผ "๊ฐœ๋ฐœ ์‹œ๊ฐ„ 6 ์ฃผ ์ด์ƒ"์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ

๋น„์šฉ์€ "slapping attributes"๊ฐ€ ์•„๋‹ˆ๋ผ ์‰ฌ์šด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋ถ€๋ถ„์€ ์˜ต์…˜ [3]์— ๋Œ€ํ•œ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.

https://github.com/dotnet/corefx/issues/11100#issuecomment -267394198 : ์—ด๋ฆฐ ์งˆ๋ฌธ : WebRequestHandler์˜ ๋‚ด๋ถ€ ์ข…์†์„ฑ์„ ์ƒˆ๋กœ์šด WinHttp ๊ธฐ๋ฐ˜ System.Net.Http์—์„œ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฝค ๋งŽ์€ ์ž‘์—…์ด๊ณ  ๋‚ด๋ถ€ ์ข…์†์„ฑ์ด ๋„ˆ๋ฌด ์‹ฌํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ชจ๋“  ํ† ๋ก ์— ์ •๋ง๋กœ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ง„์ง€ํ•˜๊ฒŒ. ๊ทธ๊ฒƒ์€ ๊ต‰์žฅ. ์ด๊ฒƒ์— ๋Œ€ํ•ด ์—ด์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ์—๋Š” dotnet / corefx # 1 ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์Šคํƒ์˜ ์ฃผ์š” ๋ถ€๋ถ„์„ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์˜ ์ค‘์‹ฌ์ด๋˜๋Š” ๋ถ€๋ถ„. ๊ทธ๋ฆฌ๊ณ  ์›๊ฒฉ์œผ๋กœ๋„ ์ ์ ˆํ•œ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ „๋ฌธ๊ฐ€๊ฐ€ ํ•„์š” ํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. WebRequestHandler๊ฐ€ ์ž‘์„ฑ๋˜์—ˆ์„ ๋•Œ (๋˜๋Š” Core๋กœ ์ด์‹ํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ) ๋ช…ํ™•ํ•˜๊ฒŒ ๋ฌธ์„œํ™” ๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์žˆ์–ด์•ผํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ๋ถ„์ด ๋ชฝํ‚ค ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๊นจ์กŒ์–ด ์•ผํ•ฉ๋‹ˆ๋‹ค.

.NET 4.0 ๊ด€๋ จ ์ œํ’ˆ์„ 5 ๋…„ ๋„˜๊ฒŒ ์ถœ์‹œ ํ•œ ํ›„,์ด ๋ฌธ์ œ๋ฅผ ํฌ์ฐฉํ–ˆ์„ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ๊ฐ–์ง€ ๋ชปํ•œ ๊ฒƒ์— ๋Œ€ํ•œ ๋ณ€๋ช…์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ณ€๋ช…์„ํ•œ๋‹ค๋ฉด ํŒ€์—๊ฒŒ ํƒ์›”ํ•จ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์žˆ์—ˆ๋‹ค๋ฉด :

  • ์ ์ ˆํ•œ ํ…Œ์ŠคํŠธ ๋ฒ”์œ„
  • ์ ์ ˆํ•œ QA ํ”„๋กœ์„ธ์Šค
  • ์ ์ ˆํ•œ ๋ฒ ํƒ€ ๋ฆด๋ฆฌ์Šค
  • ํŠน์ • ํŒจํ‚ค์ง€๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํŠน์ • ํŒ€์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๋Š” ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•

... ์ด๊ฒƒ์€ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŒ€์ด :

  • .NET์˜ ๋ชจ๋“  ๋‹จ์ผ ์ธก๋ฉด์„ ๋™์‹œ์— ๋‹ค์‹œ ์ž‘์„ฑํ•˜์—ฌ ๋ฐ”๋‹ค๋ฅผ ๋“์ด๋Š” ๋ฐ ๋„ˆ๋ฌด ์—ด์ค‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ".NET 5 / MVC 6"ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋œ ์ดํ›„์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋†’์—ฌ ์˜จ ์šฐ๋ฆฌ์˜ ๊ฒฝ๊ณ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค.

... ์ด๊ฒƒ์€ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.NET์„ ํฌ๊ฒŒ ๋ง๊ฐ€ ๋œจ๋ฆฐ ์‹คํŒจ์˜ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค. ์ „์—๋Š” ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ทœ๋ชจ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒํƒœ๊ณ„์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ๋ฌด๋„ˆ ๋œจ ๋ ธ๊ณ  ๊ณ ์น˜๊ธฐ๊ฐ€ ์ ์  ๋” ์–ด๋ ค์›Œ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๊ฒƒ์€ HttpClient ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ์กด ๊ฒฐํ•จ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ˆ˜๋งŽ์€ ์‹œ๊ฐ„์„ ๊ณ ๋ คํ•˜์ง€๋„ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ธ์Šคํ„ด์Šค๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๊ณ  TCP ์—ฐ๊ฒฐ์„ ์—ด์–ด๋‘๊ณ  DNS ํ•ญ๋ชฉ์„ ๋„ˆ๋ฌด ์˜ค๋ž˜ ์บ์‹ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ๋‹น์‹ ์€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•ฝ๊ฐ„์˜ ๊ฒฐํ•จ์„ ์žก์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์—ฐํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

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

... ๊ตฌํƒ€๋Š” ์‚ฌ๊ธฐ๊ฐ€ ์ข‹์•„์งˆ ๋•Œ๊นŒ์ง€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ์ธ์ •ํ•œ ์‹ค์ˆ˜๋ฅผ ๊ณ ์น˜๋„๋กํ•˜๊ณ  ์žฌ์น˜์— ๋ฌถ์—ฌ ์žˆ์ง€ ์•Š๋„๋กํ•˜์‹ญ์‹œ์˜ค.

๋ถ„๋ช…ํ•˜๊ฒŒ ๋งํ•˜๋ฉด, ์ €๋Š” ๋งˆ์ง€๋ง‰ ๊ฒŒ์‹œ๋ฌผ๋กœ ์ฃฝ์€ ๋ง์„์ด๊ธฐ๋ ค๊ณ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ตœ๊ทผ์— ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๋กœ๋ถ€ํ„ฐ ๋„ˆ๋ฌด ๋งŽ์€ ๋ณ€๋ช…์„ ๋ณด์•˜๋‹ค. "์ด๋ฆ„ ์ง€์ •์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค." "๋ฒ„์ „ ๊ด€๋ฆฌ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค." "์‚ฌ๋žŒ๋“ค์€ ์‹ค์ˆ˜๋ฅผํ•ฉ๋‹ˆ๋‹ค." ์ด๊ฒƒ์€ ํƒ์›”ํ•จ์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋Š” ํŒ€์ด ์•„๋‹ˆ๋ผ ์•ฝ์ ์— ๋Œ€ํ•œ ์‚ฌ๊ณ  ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋‚˜์™€์„œ ํ† ๋ก  ํ•œ @karelz ๋ฅผ ์ •๋ง ์กด๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  MSFT ์ง์›์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ๋Š”์ง€ ์ •๋‹นํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ทธ๋งŒ๋‘๊ณ  ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ๋ก์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์•  ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ๋Š๋ผ๋„๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ DateTime ๋˜๋Š” ๊ธฐํƒ€๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋งค์šฐ ์ค‘์š”ํ•œ ์˜ˆ์™ธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•œ ๋ช… ์ด์ƒ์˜ ์‚ฌ๋žŒ์ด ์ž์‹ ์˜ ์—…๋ฌด์—์„œ ํƒ์›”ํ•จ์„ ์š”๊ตฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—„์ฒญ๋‚œ ํšจ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๊ทธ๋ ‡๊ฒŒ ์ทจ๊ธ‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•˜๊ฒŒ ์œ ํšจํ•œ ์‘๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. "์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” .NET์„ ๊นจ๋œจ ๋ ธ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋  ๋•Œ๊นŒ์ง€ ์‰ฌ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค." 5 ๋…„ ์ „ ๊ตฌ๊ฐ€ ๊ณต์—ฐ์„ํ–ˆ์„ ๋•Œ ๊ทธ๋žฌ์„ ํ…๋ฐ.

.NET์—์„œ ์˜ค๋žœ ์‹œ๊ฐ„ ์ผํ•œ ๋์— ์ตœ๊ทผ์—์•ผ ๊ทธ์˜ ์ง์ฑ…์„ ๋งก์€ @karelz ์—๊ฒŒ ๊ณต๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ํ™•์‹คํžˆ ๊ทธ์˜ ํŒ€์„ ๋ฐฉ์–ด ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๊ธฐ ๋…ธ๋™์ž๋“ค์„ ํƒ“ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ถ„๋ช…ํžˆ ๊ด€๋ฆฌ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Microsoft ๊ด€๋ฆฌ์˜ ํŠน์ • ๊ณ„์ธต์—์„œ ๋„๋ฆฌ ํผ์ ธ์žˆ๋Š” ์ˆœํ™˜ ๋…ผ๋ฆฌ์™€ ์ผ์ข…์˜ ์ด์ค‘ ๋Œ€ํ™”๊ฐ€ ์‹ค์ œ๋กœ ํ•ด๋‹น ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜๋Š” ์‹ค์ œ ๊ณ ๊ฐ ์•ž์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์€ ์ถฉ๊ฒฉ์ ์ด์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

.NET Core์—์„œ Microsoft SQL Server๋Š” ์„œ๋ช…๋˜์ง€ ์•Š์€ ๊ฐ’์„ ์“ฐ๋Š” ๊ธฐ๋Šฅ์„ ์žƒ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ 2014 ๋…„์œผ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€๋Š” UserVoice ์‚ฌ์ดํŠธ์˜ ๋งจ ์œ„์—์žˆ๋Š” ๋ฌด์‹œ ๋œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ธฐ์—…์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ (ํŠนํžˆ ์„œ๋ช…๋˜์ง€ ์•Š์€ ๊ฒƒ๊ณผ ๊ฐ™์€ ์กฐ์ •)๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์‚ฌ์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‘ ํ”„๋กœ๊ทธ๋žจ ๊ด€๋ฆฌ์ž๊ฐ€ ์„ธ ๋ฒˆ ํ›„์— ๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—ฐ๋ น. ํ•œํŽธ Redis์™€ SQLite (๊ทธ๊ฒŒ ๋ญ๋“ ๊ฐ„์—)๋Š” ์ž˜ ์ž‘๋™ํ•˜๊ณ  Scott Hanselman์€ ๋งˆ์น˜์ด ๋ฌผ๊ฑด์ด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํŠธ๋ ˆ์ด๋“œ ์‡ผ ๋ฐ๋ชจ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋‚ด๋ถ€ ํ˜„์‹ค๊ณผ ์™ธ๋ถ€ ํ˜„์‹ค ์‚ฌ์ด์˜ ๊ฒฉ์ฐจ๊ฐ€ ํ™•์‹คํžˆ ๋ฒŒ์–ด์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ฌธ์ œ๋Š” (์ •์ค‘ํ•˜๊ฒŒ) ํ™˜๊ธฐ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ช…์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ๊ด€๋ฆฌ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๋Š” ์ตœ์ฒจ๋‹จ์—์„œ ์ฃฝ์–ด๊ฐ€๋Š” ํฌ๋„ ๋‚˜๋ฌด์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์‚ฐ์—…์—์„œ ๊ณ ๊ฐ์„ ๋‹ค๋ฃจ๋Š” ๋…ํŠนํ•œ ๊ด€์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„์—์„œ "๋ช…๋ฐฑํ•œ"๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฐœ๋ฐœ ์ ‘๊ทผ ๋ฐฉ์‹์˜ ๊ฐœ๋…์€ CRM ์‹œ์Šคํ…œ์—์„œ ์ด์งˆ์ ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•, ์ค‘์š”ํ•˜๊ณ  ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ง„๋ณด ๋œ ๊ธฐ์ˆ , ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. DAO ๋Œ€ ADO.NET ๋Œ€ LINQ ๋Œ€ EF๋Š” ์ผ๋ฐ˜์ ์ธ ์‰ฌ์šด ๋น„๊ต๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, ์ธํ„ฐ๋„ท ์„œ๋ฒ„ ์˜์—ญ์—์„œ์˜ ๊ฒฝ์Ÿ, ํ„ดํ‚ค ํƒœ๋ธ”๋ฆฟ์„ ์‚ฌ์šฉํ•œ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ํ•˜๋“œ์›จ์–ด ๋ชจ๋ธ ๋ฐ Balmer ๋ฐ”์ด๋Ÿฌ์Šค. ๋‹ค๋ฅธ ํ•œ๊ณ„์™€ ์žฅ์ ์„ ๊ฐ€์ง„ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์‚ฌ๊ณ  ๋ฐฉ์‹๊ณผ ๋ชจ๋ธ๋ง ๋ฌธ์ œ.

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

D ๋“œ๋ผ์ด๋ธŒ์— ์„ค์น˜ํ•˜๋ฉด ํŠน์ • ์กฐ๊ฑด์—์„œ ์ œ๊ฑฐ์‹œ ์ œํ’ˆ์ด HD์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์‚ญ์ œํ•  ์ˆ˜์žˆ๋Š” ๋ฒ„๊ทธ๋ฅผ ํ•œ ๋ฒˆ ๋†“์ณค์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” $ 40k์˜ ํ”„๋ ˆ์Šค CD๋ฅผ ๊ตฌ์›Œ์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์˜ˆ, ๋ฌธ์ œ๋Š” ์ €๋„ ํ™”๋‚˜๊ฒŒํ•˜์ง€๋งŒ ํ•ด๊ฒฐ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ๋ฌด์—‡์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค-์–ด์จŒ๋“  ์‹œ๋„์กฐ์ฐจ ๊ดด๋กญํžˆ๊ธฐ ์ „์— ์ˆ˜์‹ญ ๋…„ ๋™์•ˆ ์ด์™€ ๊ฐ™์€ ์˜คํ”ˆ ์†Œ์Šค ๋ฌธ์ œ๋Š” ์‹œ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. Linux ์‹œ์Šคํ…œ์— Kerberos๋ฅผ ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ GSSAPI๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. InitializeSecurityContext / AcceptSecurityContext๋Š” ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋ˆ ๋ฌธ์ œ.

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

๊ทธ๊ฒƒ๋“ค์€ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ œํ’ˆ์ด์—ˆ์Šต๋‹ˆ๋‹ค. .NET์€ ๋‹จ์ผ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ํ•œ ์‚ฌ๋žŒ์„ ๋น„๋‚œํ•˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ๊ณผ์ •์„ ๋น„๋‚œํ•œ๋‹ค. ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๊ฐ€ OSS๋กœ ๊ฐ”๊ธฐ ๋•Œ๋ฌธ์— ์—ญ์‚ฌ์ƒ ๊ฐ€์žฅ ์•ˆ์ •์ ์ธ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์ฐฝ ๋ฐ–์œผ๋กœ ๋‚ด๋†“๋Š” ๋ฐ ๋„์›€์ด๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌ๊ธฐํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. NuGet ๋Œ€์‹  .NET 4.6.3์œผ๋กœ ๋ฐฐ์†ก ๋˜์—ˆ๋‹ค๋ฉด ์ด๊ฒƒ์ด ์žกํ˜”์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

OSS ๋กœ์˜ ์„œํˆฌ๋ฅธ ์ „ํ™˜์€ ํ™•์‹คํžˆ ๋ฌธ์ œ์— ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” OSS๋ฅผ ๋น„๋‚œํ•˜์ง€ ์•Š์ง€๋งŒ ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๋Š” ๋ช…๋ฐฑํ•œ ์‹ค์ˆ˜๋ฅผ ๋ชจ๋‘ ์ €์ง€๋ฅธ ๊ฒƒ์„ ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด "ํ’ˆ์งˆ"๊ณผ ๊ฐ™์€ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ "์ฐธ์—ฌ"์™€ ๊ฐ™์€ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. .config ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋ฃจ์— ์ถ”๊ฐ€๋กœ 20 ๋ฒˆ ์ง‘์œผ๋กœ ์ „ํ™”ํ•˜๋Š” ์ธ์ŠคํŠธ๋ฃจ๋จผํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ "์ถ”๊ฐ€ ์ž‘์—…"์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์˜ค๋Š˜๋‚  ์ „์ฒด ์ธํ„ฐ๋„ท์˜ ์‹ ํ™”์ž…๋‹ˆ๋‹ค.

Linux ๊ฒฝํ—˜์ด์—†๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด GitHub์—์„œ Linux ์‚ฌ์šฉ์ž ๋ชจ๋“œ shim์„ ๋ผ์ด๋ธŒ๋กœ ์ž‘์„ฑํ•˜๋„๋ก ๊ฒฐ์ •ํ•œ BashOnWindows ํŒ€์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์ด ์ž‘์—…์€ ๊ธฐ๋ณธ์ ์ด์ง€๋งŒ ์ง€๋ฃจํ•œ ์ฒดํฌ ๋ฐ•์Šค ์—”์ง€๋‹ˆ์–ด๋ง ์‹ค์Šต์ด๋ฉฐ ๊ธฐ๋Šฅ ์šฐ์„  ์ˆœ์œ„์— ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ์„ ํฌํ•จ ํ•  ์ด์œ ๊ฐ€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๊ฐ”๋‹ค.

6 ๊ฐœ์›”์ด ์ง€๋‚œ ํ›„ "์ปค๋ฎค๋‹ˆํ‹ฐ"๋Š” ์ผ์ • ๊ธฐ๊ฐ„ ๋‚ด์— ๋๋‚˜๋Š” ํŒŒ์ผ์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์—†๋‹ค๊ณ  ๋งํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ผ์ข…์˜ ์ด์ƒํ•œ ๋งˆ์ผ€ํŒ… ํ™œ๋™์ž…๋‹ˆ๋‹ค. ๊ณ„ํš์— ๋‚ด์žฌ ๋œ ๊ด€๋ฆฌ์ž๋Š” ํ”ผ๋“œ๋ฐฑ์„๋ฐ›์„ ์ž๊ฒฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๋“ฃ๊ธฐ์— ๋ถˆ์พŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ํŽธ์ง‘ : Bash debacle๊ณผ ์œ ์‚ฌํ•œ ๊ฑฐ๋ž˜. ๊นจ์ง„ ๋น„ํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „๋‹ฌํ•˜๊ณ , ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ (Windows ์—…๋ฐ์ดํŠธ์˜ ์ผ๋ถ€๋กœ ๋งŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Œ)์™€์˜ ์ด์ƒํ•œ ์—ฐ๊ฒฐ, ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  Scott Hanselman์€ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฌผ๋ก  tar๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ผ์ด๋ธŒ ๋ฐ๋ชจ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์žˆ๋Š” ์ˆ˜์‚ฌ ์ค‘ ์ผ๋ถ€๋Š” Microsoft์˜ "์ข‹์€ ์˜›๋‚ "์„ ์—ฐ์ƒ ์‹œํ‚ค๋Š”๋ฐ, ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ๋ชฉ๊ฒฉํ•˜๊ณ ์žˆ๋Š” ๋ชจ๋“  ๋ณ€ํ™”๊ฐ€ Microsoft์˜ ์ง„ํ™”์— ๋Œ€ํ•œ ๊ณ ๊ฐ ์š”๊ตฌ์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ๋Œ€์‘์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ์‡„ ๋œ ์†Œ์Šค์™€ ์—„๊ฒฉํ•œ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง (๋”” ์ปดํŒŒ์ผ) ๊ทœ์น™์— ์ง€ ์ณค๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐ ์†Œ์Šค์™€ ์ด์ œ๋Š” ์˜คํ”ˆ ์†Œ์Šค๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ปดํ“จํ„ฐ์— ์„ค์น˜๋œ ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” .net Framework ๋ฒ„๊ทธ์— ์ง€ ์ณค๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๊ณ  ๊ธฐ์—… ๋ฐฐํฌ ๋ฐ IT ๋ถ€์„œ๊ฐ€ ๋ชจ๋“  .net Framework ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ์ž๊ฒฉ์„ ๊ฐ–์ถ”๋„๋ก ์š”๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฆ‰์‹œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ‘ธ์‹œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ฑ๊ณผ ํ•จ๊ป˜ nuget ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Microsoft Connect๊ฐ€ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฒ„๊ทธ๋ฅผ "์„ค๊ณ„๋œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”"๊ฒƒ์œผ๋กœ ์ข…๋ฃŒํ•˜๊ฑฐ๋‚˜ ๋ฆด๋ฆฌ์Šค ์ผ์ •์„ ์žก๋Š” ๋ฐ 6 ๊ฐœ์›”์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์— ์ง€์ณค์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ํŒ€์ด Github ํ”„๋กœ์ ํŠธ๋ฅผ ํ›จ์”ฌ ๋” ๊ธด๋ฐ€ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋ชจ๋“  ์ปค๋ฎค๋‹ˆํ‹ฐ ์ œ๊ธฐ ์ž‘์—… ํ•ญ๋ชฉ์— ๋Œ€ํ•ด 2c๋ฅผ ์‰ฝ๊ฒŒ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Microsoft๊ฐ€ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ชจ๋“  ์ข‹์€ ์•„์ด๋””์–ด๋ฅผ ์ทจํ•˜๊ณ  Microsoft๊ฐ€ ์•„๋‹Œ ๋„๊ตฌ์™€ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋…์  ๋ณต์ œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์ง€์ณค์œผ๋ฏ€๋กœ ์ด์ œ NPM, Gulp, NodeJS ๋“ฑ์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” C #์ด Windows์—์„œ๋งŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ณ  Mono์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ๋Š” ๋ชจ๋“  ๊ณณ์—์„œ #ifdef๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„๊ทธ ๋˜๋Š” ๊ธฐ๋Šฅ ๋ถ€์กฑ์„ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋ฉด์„œ ๋™๋“ฑ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ œ Xamarin์ด ์ฐธ์กฐ ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Mono ๊ฐœ๋ฐœ์„ ์ถ”์ง„ํ•˜๊ณ  ์ตœ์‹  C # ์–ธ์–ด๋ฅผ ์ฝ”๋”ฉํ•˜๊ณ  .net, UWP, iOS, Android ๋ฐ netcore์—์„œ ๋™์ผํ•œ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์ด ํ•œ๊บผ๋ฒˆ์— ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์— ๋ฌธ์ œ์˜ ์ ˆ๋ฐ˜ ๋งŒ ํ•ด๊ฒฐํ•˜๋Š” ์™„๋ฒฝํ•˜๊ณ  ์•ˆ์ •์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋™์•ˆ Microsoft๊ฐ€ ๋”ฐ๋ผ ์žก๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

3 ์ฃผ ๋™์•ˆ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„ ์ƒˆํ•ด ๋ณต ๋งŽ์ด ๋ฐ›์œผ์„ธ์š”.

@karelz์˜ ์ธ์šฉ๋ฌธ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์—ฌ๊ธฐ์—

์ ์–ด๋„ ๋งค์ฃผ ์—…๋ฐ์ดํŠธ๊ฐ€์žˆ์„ ๋•Œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒŒ์‹œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@chadwackerman ์ง„์ง€ํ•˜๊ฒŒ, ๋‹น์‹ ์˜ ๋‚˜์œ ํƒœ๋„ ๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ๋” ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ๊ณผ๋Š” ๋ณ„๊ฐœ๋กœ, ๋‹น์‹ ์€ ์—ฌ๊ธฐ์„œ ๋‹น์‹  ์ž์‹ ์„ ๋ฐ”๋ณด๋กœ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์กฐ๋ฅผ ํ–ฅ์ƒ ์‹œํ‚ค์‹ญ์‹œ์˜ค.

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

๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ฒซ ๋ฒˆ์งธ ์ง„์ˆ ๊ณผ ๊ด€๋ จํ•˜์—ฌ : ์ด๊ฒƒ์€ ๋Ÿฐํƒ€์ž„๊นŒ์ง€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ์ฃผ์š” ์ฃผ์š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. 5 ๋…„ ์ „ ScottGu ๋˜๋Š” Rob Howard๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐฐ์†ก ๋  ๋•Œ๊นŒ์ง€ 24 ์‹œ๊ฐ„ ๋‚ด๋‚ด ํŒ€์„ ๊ตฌ์„ฑํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ "์•Œ๋‹ค์‹œํ”ผ, ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค."

์‚ฌ๋žŒ๋“ค์„ ํ–‰๋ณตํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์—ด๋ฐ›์€ ๊ณ ๊ฐ์ด ์žˆ๊ณ  ๊ทธ๋“ค ์ค‘ ์ผ๋ถ€๋Š”์ด ์Šค๋ ˆ๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ํ™”๋ฅผ ๋‚ผ ๋ชจ๋“  ๊ถŒ๋ฆฌ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ @pollax๋ผ๋Š” ๋ถ„๊ฐœ์™€ ๊ด€๋ จ์ด์žˆ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์ฐพ์œผ์‹ญ์‹œ์˜ค. ๋‹น์‹ ์€์ด ์Šค๋ ˆ๋“œ์— ์˜๋ฏธ์žˆ๋Š” ์–ด๋–ค ๊ฒƒ๋„ ๊ธฐ์—ฌํ•˜์ง€ ์•Š์•˜๊ณ , ์•„๋ฌด๋„ ๋‹น์‹ ์—๊ฒŒ GitHub ์‚ฌ๊ณ  ๊ฒฝ์ฐฐ์„ ๊ธฐ๋ฆ„ ๋ถ€์Œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ์ด ๋ฌธ์ œ์— ํšŒ์‚ฌ์˜ $ 5K ์ด์ƒ์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ์•„๋งˆ๋„ ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋งŽ์ด ์ฝ์—ˆ๊ณ  ๊ทธ๊ฐ€ ์ด์ „ ์ฝ”๋ฉ˜ํŠธ์—์„œ ์‚ฌ์šฉํ•œ ์–ด์กฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ์•ฝ๊ฐ„ ์•„์ด๋Ÿฌ๋‹ˆ ํ•œ ์–ด์กฐ๋กœ ๋งˆ์ง€๋ง‰์„ ์ฝ์—ˆ๋‹ค. ๋ฏธ์•ˆํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ์— ๊ด€ํ•˜์—ฌ ๋“ค๋ ค์š”. ๋‚˜๋Š” ๋‚˜ ์ž์‹ ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด์ด ๋ฌธ์ œ๋ฅผ ๊ทธ๋ ‡๊ฒŒ ๋ฉด๋ฐ€ํžˆ ๋ณด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค). ๋ˆ / ์ž์› ์ธก๋ฉด์—์„œ ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ  / ๋‚ญ๋น„ํ•˜์ง€ ์•Š์€ ๊ฒƒ์— ๋Œ€ํ•œ ๊ฐ€์ •์„ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์ฃผ์š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‹น์‹ ์„ ์ณ๋‹ค ๋ณด๋Š” ๊ฒƒ์ž„์„ ์••๋‹ˆ๋‹ค.

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

๋˜ํ•œ Exceptionless nuget ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ํ”„๋ ˆ์ž„ ์›Œํฌ์—์„œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด๋‚˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ์ „์ฒด ํ”„๋ ˆ์ž„ ์›Œํฌ 4.6.2๋ฅผ ์‹คํ–‰ํ•˜๋Š” Windows ์„œ๋น„์Šค์—์„œ ์ž์ฒด ํ˜ธ์ŠคํŒ… ASP.NET Core๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ข…์†์„ฑ NETStandard.Library 1.6.1์€ System.Net.Http 4.3.0์„ ์‚ฌ์šฉํ•˜๋„๋กํ•ฉ๋‹ˆ๋‹ค.

์ข…์†์„ฑ NETStandard.Library 1.6.1์€ System.Net.Http 4.3.0์„ ์‚ฌ์šฉํ•˜๋„๋กํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ ์  ๋” ๋งŽ์€ ํŒจํ‚ค์ง€๊ฐ€ ๋ฉ”ํƒ€ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ๊ฐ€์ ธ ์™€์„œ ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๋ชจ๋“  ์ข…์†์„ฑ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (๋˜๋Š” ํŠน์ • ํ•ญ๋ชฉ์„ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ / ๋ฌด์‹œํ•˜๋Š” ํž˜๋“  ์ „ํˆฌ์— ๋งž์„œ ์‹ธ์›Œ์•ผํ•ฉ๋‹ˆ๋‹ค).

์ด๊ฒƒ์€ ์‹œ์Šคํ…œ ์ข…์†์„ฑ์˜ "ํ˜ผํ•ฉ ๋ฐ ์ผ์น˜"์— ๋Œ€ํ•œ ์ด์ „ ์•ฝ์†๊ณผ ์ƒ๋ฐ˜๋ฉ๋‹ˆ๋‹ค.

๋งค ๋‘ ๋ฒˆ์งธ ํŒจํ‚ค์ง€๊ฐ€ .net 1.6๊ณผ ๋ฒ„๊ทธ๊ฐ€์žˆ๋Š” System.Net.Http๋ฅผ ๊ฐ€์ ธ ์™”๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ์„ 4.6.1์—์„œ 4.5.2๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ œ 3 ์ž ํŒจํ‚ค์ง€ ์ผ ๋ฟ์ด๋ผ๋ฉด, ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๋Œ์•„ ๋‹ค๋‹ˆ๋ฉฐ ๋” ์„ธ๋ถ„ํ™” ๋œ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์œ ์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๊ท€์ฐฎ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ deps๋Š” MS์—์„œ ์™”์œผ๋ฉฐ MS๊ฐ€ ์„ธ๋ถ„ํ™” ๋œ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. .net 1.6์„ ๋„ˆ๊ฒŸ ํŒŒ์ผ์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

์ง€๋‚œ ๋ฉฐ์น  ๋™์•ˆ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ณด๋‚ผ ๊ณ„ํš ์ด์—ˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@CIPop ์˜ ์ž‘์—…์€ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ธํ•ด ์„ ์ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์˜ ์ž‘ํ’ˆ์€ @davidsh์— ์˜ํ•ด ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @davidsh ๋Š” ์ด๋ฒˆ ์ฃผ ์ดˆ (์ฆ‰, ์ง€๊ธˆ ์–ธ์ œ๋“ ์ง€) PR์„ ์ œ์ถœํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ณ„ํš ๋ฐ ์ƒํƒœ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋†’์€ ์ˆ˜์ค€์˜ ๊ณ„ํš :
A. CoreFX์˜ net46 ๋นŒ๋“œ์—์„œ WinHttpHandler๋ฅผ HttpClientHandler๋กœ ๋Œ€์ฒด
B. 4.1.0.0 OOB ํŒจํ‚ค์ง€์—์„œ ์†Œ๊ฐœ ํ•œ HttpClientHandler์— 8 ๊ฐœ์˜ ์ƒˆ๋กœ์šด API ๊ตฌํ˜„

์‹คํ–‰ ๊ณ„ํš :

2017/1/12 ์ˆ˜์ • -์‹คํ–‰ ๊ณ„ํš์ด ์ตœ์ƒ์œ„ ๊ฒŒ์‹œ๋ฌผ https://github.com/dotnet/corefx/issues/11100#issue -173058293์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@niemyjski ๊ฒฌ๊ณ ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด๋‚˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์ œ๊ฐ€๋˜๋Š” ํŒจํ‚ค์ง€๋ฅผ 4.0.0.0 (https://github.com/dotnet/corefx/issues/11100#issuecomment-246469893 ์ฐธ์กฐ)์œผ๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. -์ด๊ฒƒ์ด์ด ๋ฌธ์ œ๊ฐ€ ๊ทธํ† ๋ก ๊ณ ํ†ต์Šค๋Ÿฌ์šด ์ฃผ์š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

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

์—ฌ๊ธฐ์— ํ”„๋กœ์„ธ์Šค ๊ฐœ์„ ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์•„์ด๋””์–ด (๋ฐ ์งˆ๋ฌธ)๊ฐ€์žˆ์–ด ํ–ฅํ›„ ์ค‘์š”ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ฌธ์ œ๊ฐ€ ์˜ค๋žซ๋™์•ˆ ๋ˆˆ์— ๋„์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐฐ์†ก ๋œ ํ›„ ์˜๋„์ ์œผ๋กœ ๋…ผ์˜๋ฅผ ์—ฐ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ!

์ž˜ ํ–ˆ์–ด @karelz

์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. PlatformNotSupported๋Š” ๋ ˆ๊ฑฐ์‹œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ƒˆ๋กœ์šด API์ด๊ธฐ ๋•Œ๋ฌธ์—์—†๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.

์‚ฌํ›„ ์ˆ˜์ •์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€๋งŒ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ํ†ตํ•œ ํ†ตํ•ฉ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ•„์š”ํ•˜์ง€๋งŒ ์ด์ „ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ตœ์‹  ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๋„ˆ๊ฒŸ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ƒ์„ฑ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

PR dotnet / corefx # 15036์ด ์ฒดํฌ์ธ๋˜์—ˆ์œผ๋ฏ€๋กœ์ด ๋ฌธ์ œ๋Š” wrt net46์—์„œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. System.Net.Http.dll์€ ์ด์ œ .NET Framework์˜ ๊ธฐ๋ณธ ์ œ๊ณต HTTP ์Šคํƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” WebRequestHandler์™€ 100 % ํ˜ธํ™˜์„ฑ์ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

MyGet ๊ฐœ๋ฐœ ํ”ผ๋“œ์—์„œ ์ตœ์‹  ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์‹ญ์‹œ์˜ค. ์˜ค๋Š˜ ํ˜„์žฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ตœ์‹  ๋นŒ๋“œ System.Net.Http.dll ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Net.Http

๋ฒ„์ „ 4.4.0-beta-24913-02.

๋ช…๋ น ์ค„ ๋„๊ตฌ ๋˜๋Š” Visual Studio๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NuGet ํŒจํ‚ค์ง€ ์†Œ์Šค ํ”ผ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ฐœ๋ฐœ ํ”ผ๋“œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช…๋ น:

๋ช…๋ น ์ค„ :
nuget.config์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.์š”์†Œ:

<add key="myget.org dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />

๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค:
VS์—์„œ ๋„๊ตฌ-> ์˜ต์…˜-> Nuget ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž-> ํŒจํ‚ค์ง€ ์†Œ์Šค-> ์ถ”๊ฐ€, ์†Œ์Šค์—์„œ ๋‹ค์Œ URL์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. https://dotnet.myget.org/F/dotnet-core/api/v3/index.json

๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ MyGet ๊ฐœ๋ฐœ ํ”ผ๋“œ๋ฅผ ๋ชฉ๋ก์˜ ์ฒซ ๋ฒˆ์งธ ํ”ผ๋“œ๋กœ ๋‚˜์—ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  dotnet / corefx # 15036์˜ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์š”์•ฝํ•˜๊ธฐ ์œ„ํ•ด ์›๋ž˜ .NET Framework System.Net.Http 4.0 API ํ‘œ๋ฉด๊ณผ 100 % ์•ฑ ํ˜ธํ™˜์„ฑ์ด ์žˆ๊ณ  WebRequestHandler ์‚ฌ์šฉํ•  ๋•Œ 100 % ์•ฑ ํ˜ธํ™˜์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

HttpClientHandler (. NET Core 1.1 ์ด์ƒ์— ํฌํ•จ๋จ)์— ์ถ”๊ฐ€ ๋œ ์ตœ์‹  ์†์„ฑ์— ๋Œ€ํ•œ ์ง€์› ์ˆ˜์ค€๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‹ค์Œ์€ 'net46'๋Œ€์ƒ์—์„œ ์‹คํ–‰ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์ตœ์‹  ์†์„ฑ์˜ ์˜ˆ์ƒ ๋™์ž‘์„ ์š”์•ฝ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :

1) ๊ณต๊ฐœ bool CheckCertificateRevocationList
PlatformNotSupportedException ๋˜์ง

2) ๊ณต๊ฐœ X509CertificateCollection ClientCertificates
๊ตฌํ˜„

3) ๊ณต์šฉ ICredentials DefaultProxyCredentials
๊ตฌํ˜„

4) ๊ณต์šฉ int MaxConnectionsPerServer
ํ˜„์žฌ ServicePoint ๋กœ์ง์— ๋Œ€ํ•ด ๊ตฌํ˜„ ๋จ

5) public int MaxResponseHeadersLength
๊ตฌํ˜„

6) ๊ณต๊ณต IDictionary์†์„ฑ
๊ตฌํ˜„

7) ๊ณต์šฉ ๊ธฐ๋ŠฅServerCertificateCustomValidationCallback
ํ˜„์žฌ ๋‚ด๋ถ€ HttpWebRequest ๋ฅผ HttpRequestMessage ์— ๋งคํ•‘ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ํ•ญ์ƒ null ์ธ ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ  ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

8) ๊ณต์šฉ SslProtocols SslProtocols
PlatformNotSupportedException ๋˜์ง

์šฐํ›„! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋ˆ„๊ตฌ๋“ ์ง€ @davidsh ์˜ ๋น„ํŠธ๋ฅผ ๊ฒ€์ฆ ํ•  ๊ธฐํšŒ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ? ์ด ์Šค๋ ˆ๋“œ์— ์•”์‹œ ๋œ 7 ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ์ข…๋‹จ ๊ฐ„ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ •๋ง ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ @onovotny ์˜ ๋‹จ์ˆœํ™” ๋œ ์žฌํ˜„์„ ๊ฒ€์ฆ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋กœ์ปฌ์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ ์žฌํ˜„์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋” ๋งŽ์€ ํ™•์ธ์„ ์–ป๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ 1.1 ๋ธŒ๋žœ์น˜๋กœ ํฌํŒ…ํ•˜๊ณ  ํŒจ์น˜๋ฅผ ์ถœ์‹œ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ฃผ์— ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์—์Šค์ปฌ๋ ˆ์ด์…˜์— ๋“ค์–ด๊ฐ” ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”์ธก์œผ๋กœ๋Š” 1-2 ์ผ ๋™์•ˆ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@dluxfordhpf ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ํ”„๋กœ์ ํŠธ์— 4.4.0-beta-24913-02๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ ์‚ฌ๊ฑด์— ๋„์›€์ด๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‚ฌ๋ก€ : ์ „์ฒด ํ”„๋ ˆ์ž„ ์›Œํฌ 4.6.2๋ฅผ ์‹คํ–‰ํ•˜๋Š” Windows ์„œ๋น„์Šค์—์„œ ์ž์ฒด ํ˜ธ์ŠคํŒ… ASP.NET Core. ์ข…์†์„ฑ NETStandard.Library 1.6.1์€ System.Net.Http 4.3.0์„ ์‚ฌ์šฉํ•˜๋„๋กํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝํ—˜์ƒ myget ํ”ผ๋“œ๊ฐ€ ๋งค์šฐ ๋Š๋ฆฝ๋‹ˆ๋‹ค. System.Net.Http 4.4.0-beta-24913-02๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ๋ช‡ ๋ถ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
OK https://dotnet.myget.org/F/dotnet-core/api/v3/registration1/system.net.http/index.json 82079ms
OK https://dotnet.myget.org/F/dotnet-core/api/v3/registration1/system.net.http/index.json 93813ms

ํ™•์ธํ•˜๊ณ  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์‹  @ annemartijn0 ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ ํ˜„์žฌ 5 ~ 7 ๋ถ„ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Net.Http

๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๋Š” ์™œ์ด ๊ทธ๋Š˜์ง„ ์ž‘์€ ํšŒ์‚ฌ์™€ ์–ด๋ฆฌ์„์€ ์ž‘์€ ์‚ฌ์ดํŠธ์— ์ค‘์š”ํ•œ ์ธํ”„๋ผ๋ฅผ ์•„์›ƒ์†Œ์‹ฑํ•ฉ๋‹ˆ๊นŒ? ๋ฒจ๊ธฐ์—์—์žˆ๋Š” Tech Tomato๋ผ๋Š” ํšŒ์‚ฌ์— ๊ท€ํ•˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค์™€ ๋‚ด ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ๊ณ ์ •ํ•˜๊ธฐ๋กœ ๊ฒฐ์ • ํ•˜์…จ๋‚˜์š”?

์–ด์จŒ๋“  ... ์ด๋ฏธ myget ํ”ผ๋“œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ Visual Studio๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„ ๋Œ€ํ™” ์ƒ์ž์—์žˆ๋Š” "์—…๋ฐ์ดํŠธ"๋‹จ์ถ”๋ฅผ ํด๋ฆญ ํ•œ ๋‹ค์Œ Visual Studio๋ฅผ ๋‘ ๋ฒˆ์งธ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ๊นŒ์ง€์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Visual Studio 2015๊ฐ€ ๋‚ด ํŒจํ‚ค์ง€๋ฅผ ๋ณต์›ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๋™์•ˆ ์ด๊ฒƒ์„ ์ž…๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ : Visual Studio๋Š” ์—ฌ์ „ํžˆ ํ”๋“ค๋ฆฌ๊ณ  ์žˆ์ง€๋งŒ myget ํŽ˜์ด์ง€ ์ƒˆ๋กœ ๊ณ ์นจ์ด ๋งˆ์นจ๋‚ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•˜๋ฃจ์— ์ˆ˜์‹ญ ๋ฒˆ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œํŽธ Visual Studio๋Š”์ด๋ฅผ "System.Net.Http-75.8K ๋‹ค์šด๋กœ๋“œ"๋กœ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•ญ์ƒ ์ด๋Ÿฌํ•œ ํ†ต๊ณ„๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ์„ ๋งํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์ง€๋งŒ ์—ฌ๊ธฐ์— ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ด์œ ์— ๋Œ€ํ•œ ์ข‹์€ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. .NET ์—ญ์‚ฌ์ƒ์ด ์–ด๋ฆฌ์„์€ ์ˆœ๊ฐ„์— ๋ช…์‹œ ์ ์œผ๋กœ ๊ด‘๊ธฐ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๊ณ  ์˜๋„ ์น˜ ์•Š๊ฒŒ ์•ŒํŒŒ ํ…Œ์Šคํ„ฐ๊ฐ€๋˜์ง€ ์•Š๋„๋ก ์ตœ์†Œํ•œ ํ˜„์žฌ ๋ฒ„์ „ ์ƒํƒœ์™€ ์š”์•ฝ์„ ์•Œ๋ ค์ฃผ์„ธ์š”.

5 ์‹œ๊ฐ„ ํ›„์—๋„ ์—ฌ์ „ํžˆ์ด ํŒจ์น˜๋ฅผ ์‹œ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Attempting to gather dependency information for package 'System.Net.Http.4.4.0-beta-24913-02'
with respect to project '...', targeting '.NETFramework,Version=v4.6.1'

์˜ค๋ถ„ ๋’ค...

Package 'System.Net.Http 4.4.0-beta-24913-02' is not found in the following primary source(s):
'https://dotnet.myget.org/F/dotnet-core/api/v3/index.json'. Please verify all your online package
sources are available (OR) package id, version are specified correctly.

.NET์€ ํƒ€์ด์–ด ํ™”์žฌ์ž…๋‹ˆ๋‹ค.

@chadwackerman . ๋ฒ ํƒ€ / ์•ŒํŒŒ / ๋น„ ํ”„๋กœ๋•์…˜ ํ”ผ๋“œ์— _ ์˜ตํŠธ ์ธ _ ํ–ˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ ๋“ฑ์„ ์ œ์™ธ ํ•  ์ค€๋น„๊ฐ€๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ €๋Š” ์˜ค๋žซ๋™์•ˆ myget (์œ ๋ฃŒ ๊ตฌ๋…)์„ ์‚ฌ์šฉํ•ด ์™”์œผ๋ฉฐ ๋ฌธ์ œ๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ. ๊ทธ๋ž˜์„œ ์–ด์ฉŒ๋ฉด .. ์–ด์ฉŒ๋ฉด .. ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ์ปดํ“จํ„ฐ / ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ / ๋ฌด์—‡์ด๋“ ๊ฐ„์—? (์ง€๋‚œ 12 ๊ฐœ์›” ์ด์ƒ MyGet์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ง ํฐ ์„ฑ๊ณผ๋ฅผ ๊ฑฐ๋‘์—ˆ์Šต๋‹ˆ๋‹ค).

.NET์€ ์ง€๊ธˆ ๋‹น์žฅ ํƒ€์ด์–ด ํ™”์žฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฌผ๋ก , ์น˜์ฆˆ๊ฐ€ _ ๋ฌด๋”๊ธฐ _ ์›€์ง์ด๊ณ  ์žˆ๊ณ , ์›€์ง์ด๋Š” ๋ถ€ํ’ˆ๊ณผ ๋ถ€ํ’ˆ์ด ๋งŽ์ด ์ž˜๋ชป ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ RC ๋ฐ RTM ๋น„ํŠธ๊ฐ€ ์ถœ์‹œ๋˜์–ด ํ›Œ๋ฅญํ•œ ์ผ์„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๊ฐœ ๋ฆด๋ฆฌ์Šค ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋” ์ด์ƒ ๋ฒ ํƒ€ ๋‚˜ RC๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ œ ๊ธฐ๋Œ€๋Š” ๋ฌธ์ œ๋Š” ์ ์ง€ ๋งŒ ๋” ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ์ด ์ค‘ ์ผ๋ถ€๊ฐ€ ์ •๋ง ์‹ค๋ง ์Šค๋Ÿฝ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค๋ฉด-์ด ๊ฐœ๋ฐœ ์ž‘์—… ์ค‘ ์ผ๋ถ€๊ฐ€ RTM ์ƒํƒœ์— ๋„๋‹ฌ ํ•  ๋•Œ๊นŒ์ง€ ์กฐ๊ธˆ ๋” ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค.

corefx ํŒ€ (๋ฐ .NET-core ์„ธ๊ณ„์˜ ๋‹ค๋ฅธ ํŒ€)์˜ ์ž‘์—…์€ bad-ole-Balmer-day์— ๋น„ํ•ด github / open-and-transparent ์ง„ํ–‰๊ณผ ๊ด€๋ จํ•˜์—ฌ ํ›Œ๋ฅญํ•˜๊ณ  ํ™˜์˜ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘๋Š” ๋ฆฌํฌ ์œ ์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๊ธ์ •์ ์ด๊ณ  ๋„์›€์ด๋˜๋„๋ก ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์€ ์ธ๊ฐ„์ด๋ฉฐ ํ•œ ๋ฒˆ์— ํ•œ ๋ฐ”์ดํŠธ ์”ฉ ์„ธ์ƒ์„ ๋” ๋‚˜์€ ๊ณณ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@chadwackerman ์ง€๊ธˆ myget ํ”ผ๋“œ๊ฐ€ ๊ณ ํ†ต๋ฐ›๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. myget์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ 100 % ํ™•์‹  ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ „์šฉ ํ˜ธ์ŠคํŠธ ( "dotnet.myget.org")๊ฐ€ ์žˆ๋‹ค๋ฉด ํ”ผ๋“œ๊ฐ€ ์‹ค์ œ๋กœ ํ…Œ๋„ŒํŠธ๋˜๊ณ  QOS ์ œํ•œ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋กœ ์ด๋™ํ•˜๋ฉด ํŒจํ‚ค์ง€๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ ํ‘œ์‹œ๋˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Net.Http

@PureKrome ์ €๋Š”์ด ๋นŒ๋“œ๋ฅผ ํ™•์ธํ•˜๋ผ๋Š” ์š”์ฒญ์„๋ฐ›์€ ์ „ Microsoft ๊ฐœ๋ฐœ์ž ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค (์œ„ ์ฐธ์กฐ). .NET ํŒ€์˜ ์•„๋ฌด๋„ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฒ„๊ทธ๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ด์…˜ ํ•œ ํ›„. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๊ทธ๋“ค์€ ๋‚˜์—๊ฒŒ ๋นŒ์–ด ๋จน์„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

๋‚˜๋Š” ํƒ€์ด์–ด ํ™”์žฌ๋ฅผ ๋ณผ ๋•Œ ์••๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ƒ๊ณ„๋ฅผ ์œ„ํ•ด ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ์— ๋‚ด ๋†“๊ณคํ–ˆ๋‹ค.

@chadwackerman ํ”ผ๋“œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ถˆ๋งŒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ( '๋ฉ์ฒญํ•œ ์ž‘์€ ์‚ฌ์ดํŠธ'์™€ '๊ทธ๋ƒฅ ์ž‘์€ ํšŒ์‚ฌ')๋ผ๋Š” ์ด๋ฆ„์€ ์ˆœ์„œ๊ฐ€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Tech Tomato๋Š” ์ž๊ฒฉ์„ ๊ฐ–์ถ˜ ๊ฐœ์ธ์ด ์„ค๋ฆฝ / ์šด์˜ํ•ฉ๋‹ˆ๋‹ค. @maartenba , ๊ท€ํ•˜์˜ ์ „ ๊ณ ์šฉ์ฃผ๊ฐ€ MVP ์ˆ˜์ƒ์ž, ํ˜„์žฌ MS ์ง์› ์ธ @xavierdecoster . ํ˜์‹ ์„ ์žฅ๋ คํ•˜๋Š” ๊ตญ๊ฐ€ (๋‚ด๊ฐ€ ์„ ํ˜ธํ•˜๋Š”)์—์„œ. ํšŒ์‚ฌ ์ด๋ฆ„์€ ๊ฑฐ์˜ ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ ํšŒ์‚ฌ๊ฐ€ ๋ฒจ๊ธฐ์—์—์„œ ์„ค๋ฆฝ๋˜์—ˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. .NET Core ํŒ€์€ ์†”๋ฃจ์…˜์„ ์œ„ํ•ด ์›Œ์‹ฑํ„ด ์ฃผ ๋ ˆ๋“œ๋ชฌ๋“œ๋ฅผ ๋„˜์–ด์„œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜๋Š” ๊ฑด์„ค์ ์ธ ๊ธฐ์—ฌ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์šด์˜์ž๊ฐ€ ํŽธ์ง‘ ํ•œ ์ฝ˜ํ…์ธ 

์ด ์Šค๋ ˆ๋“œ์˜ ์ผ๋ถ€ ๋Œ“๊ธ€์— ๋Œ€ํ•ด ํ–‰๋™ ๊ฐ•๋ น ๋ณด๊ณ ์„œ๊ฐ€ ์ œ์ถœ๋˜์—ˆ์œผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ํ•ด๋‹น ๊ฐ•๋ น์„ ์œ„๋ฐ˜ ํ•œ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋˜๋Š” ์ผ๋ถ€ ์ž๋ฃŒ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด๋‚˜ ์šฐ๋ ค ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด [email protected]๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด

@chadwackerman ํšŒ์‚ฌ์—์„œ ๊ท€ํ•˜์˜ ์ด์ „ ์ง์œ„๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ์ด ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋Œ€๋ถ€๋ถ„์˜ '๊ธฐ์—ฌ'๋Š” ๊ตฌ์กฐ์ ์ด์ง€ ์•Š์„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์†Œํ•˜๊ณ  ์œ ์น˜ํ•˜๋ฉฐ ์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ ํŠธ๋กคํ•˜์‹ญ์‹œ์˜ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„-์—ฌ๊ธฐ .NET ์žฌ๋‹จ์˜ Martin ์ด ์ด๊ฒƒ์„ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์ œ๊ธฐ ๋œ ์›๋ž˜ ๋ฌธ์ œ๊ฐ€ ์‹ค๋ง์Šค๋Ÿฝ๊ณ  ์‚ฌ๋žŒ๋“ค์ด ํ•ด๊ฒฐํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋Š” ์ ์— ๊นŠ์ด ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ’ˆ์งˆ๊ณผ ๋ฐฐ์†ก, ์ „๋ฐ˜์ ์ธ ๋Š๋‚Œ์˜ ๊ฐ•๋„์— ๋Œ€ํ•œ ๋” ํฐ ์šฐ๋ ค๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํŒ€์€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ณ„์†ํ•ด์„œ ์‚ฌ๋žŒ๋“ค์„ ์—…๋ฐ์ดํŠธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด Tech Tomato์— ์—ฐ๋ฝ์„ ์‹œ๋„ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด ๋ฌธ์˜์— ๋Œ€ํ•œ ์‘๋‹ต์ด ์—†์Šต๋‹ˆ๋‹ค.

ํ”ผ๋“œ๋ฅผ ์ถ”๊ฐ€ ํ•œ ํ›„ ์ด์ƒํ•œ ๋นŒ๋“œ ๊ฒฝ๊ณ ๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋Š” ์‹ค์ œ ์ž‘์—…์„ ์‹œ๋„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Attempting to gather dependency information for package
'System.Net.Http.4.4.0-beta-24913-02' targeting '.NETFramework,Version=v4.6.1'
Gathering dependency information took 1.55 min

Attempting to gather dependency information for package 
'Microsoft.Extensions.Configuration.Json.1.1.0' targeting '.NETFramework,Version=v4.6.1' 
Gathering dependency information took 2.2 min

... ๋“ฑ๋“ฑ.

์ด ๋งํฌ๋Š” ํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์—ฌ์ „ํžˆ 5 ๋ถ„ ์ด์ƒ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Net.Http

์ด๊ฒƒ์ด a) ์•„์ง ์ˆ˜์ •๋˜์ง€ ์•Š์•˜ ์Œ b) ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋ฌด์‹œ๋˜๊ณ  c) ์ผ์ƒ์ ์ธ ๊ฐœ๋ฐœ์˜ ์ผํ™˜์œผ๋กœ .NET ํŒ€์ด์ด ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœ ํ•œ ํ”„๋กœ์„ธ์Šค, ๋„๊ตฌ, ๋ฌธํ™” ๋ฐ ๊ด€๋ฆฌ์˜ ๋ช…๋ฐฑํ•œ ๊ฒฐํ•จ์„ ๊ฐ•ํ™”ํ•˜๋Š” ์—ญํ• ์„ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ-๋ฒ„๊ทธ ์ž์ฒด๋Š” ์ œ๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ๋‚ด๋ถ€์ ์œผ๋กœ ์—์Šค์ปฌ๋ ˆ์ด์…˜ ํ•  ๋•Œ๊นŒ์ง€ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๋ฌด์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@karelz๊ฐ€ ์•ฝ์† ํ•œ ์‚ฌํ›„ ๋ถ€๊ฒ€์„ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์ฐจ๋“œ,

๊ทธ ํŽ˜์ด์ง€๋กœ๋“œ ์‹œ๊ฐ„์€ ์šฐ๋ฆฌ๊ฐ€๋ณด๊ณ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. NuGet ๋ณต์› ์‹œ๊ฐ„์ด ์ •์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด ์‚ฌ์šฉ์ค‘์ธ NuGet.exe ๋ฒ„์ „์— ๋Œ€ํ•œ ์–ธ๊ธ‰๊ณผ -Verbosity Detailed ์Šค์œ„์น˜๊ฐ€ ํ™œ์„ฑํ™” ๋œ ์ถ”์ ์„ ํ†ตํ•ด MyGet.org์˜ ์ง€์›์„ ํ†ตํ•ด (MyGet)์— ๋ฌธ์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ!

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์ฝ˜์†” ํ˜ธ์ŠคํŠธ ๋ฒ„์ „ 3.5.0.1996

myget.org ํ”ผ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด Visual Studio๊ฐ€ ๊ฒฌ๊ณ  ํ•จ์—์„œ ๋ถˆ์•ˆ์ • ํ•ด์ง์— ๋”ฐ๋ผ ๋ช…๋ น ์ค„์—์„œ ๋กœ๊ทธ๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ๋‹จ ํŒจํ‚ค์ง€๋ฅผ ์žก์•„ ๋‹น๊ธฐ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋„˜์–ด์ง‘๋‹ˆ๋‹ค.

quality

ps @karelz : ํƒ€์ด์–ด ํ™”์žฌ.

www.nuget.org/downloads์˜ ์ตœ์‹  (์•ผ๊ฐ„) NuGet.exe๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์ด ๋ช…๋ น ์ค„์„ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ ?

์ •ํ™•ํ•œ ๋ช…๋ น : NuGet.exe install System.Net.Http -Version 4.4.0-beta-24913-02 -Verbosity Detailed

์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋ชจ๋“  ์ค‘๊ฐ„ ๋‹ค์šด๋กœ๋“œ ์ž‘์—…๋„ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

@maartenba :

๋ณด๋‚ธ ๋งํฌ์—์„œ "latest"๋Š” https://dist.nuget.org/win-x86-commandline/latest/nuget.exe๋ฅผ ๊ฐ€๋ฆฌ ํ‚ต๋‹ˆ๋‹ค

์•ผ๊ฐ„ ํŒจํ‚ค์ง€ NuGet.CommandLine.4.0.0-rtm-2254.nupkg๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์—ฌ๊ธฐ์— nuget.exe ์„ค์น˜๋ฅผ ์‹คํ–‰ํ–ˆ์ง€๋งŒ myget.org์—์„œ ํŒŒ์ผ์„ ๊ฐ€์ ธ ์˜ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ  : dotnet.myget.org์—์„œ 404๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ 1.5 ์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์•ผ๊ฐ„ ๋นŒ๋“œ ๋˜๋Š” ๋กœ์ปฌ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜ํ•˜๋ ค๋ฉด Gmail์—์„œ์ด ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.

๋„์™€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ... ์™€์šฐ. 4.0.0-rtm ๋ฒ„์ „ ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ๋“  5 ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ˆ˜๋™ ๋ฐฉ๋ฒ•์ด์žˆ๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์˜ ์•ผ๊ฐ„ ๋“œ๋กญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ํ˜ธ์ŠคํŠธ์˜ ๋ณด์กฐ ํŒจํ‚ค์ง€ ํ˜ธ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹จ์ˆœํ•จ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ ํŽ˜์ด์ง€์—์„œ ์ž์ฒด ์—…๋ฐ์ดํŠธ๋˜๋ฉฐ, ๊ฐ ํŽ˜์ด์ง€์—๋Š” ์ˆ˜๋™ ์‚ฌ์šฉ์ž ๊ฐœ์ž…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ps @karelz ... ์•„, ์‹ ๊ฒฝ ์“ฐ์ง€ ๋งˆ. :)

์™„์ „ํžˆ ๋™์˜ํ•˜์ง€๋งŒ ๋กœ๊ทธ๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์ด์žˆ๋Š” ๊ณณ์„ ์ฐพ๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค (๋ณด์กฐ ํŒจํ‚ค์ง€ ํ˜ธ์ŠคํŠธ, ํด๋ผ์ด์–ธํŠธ ์ž์ฒด, ๋ฏธ์นœ CDN ๋…ธ๋“œ, ์šฐ์ฃผ์„  ๋“ฑ). ์˜คํ”„๋ผ์ธ์œผ๋กœ ์—ฐ๋ฝํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

myget.org๊ฐ€ ๋งค์šฐ ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„ ์ฐจ ๋ ธ์ง€๋งŒ "ํ•ฉ๋ฆฌ์ ์ธ"์‹œ๊ฐ„ (๊ณต์šฉ Wi-Fi ๋„คํŠธ์›Œํฌ์—์„œ)์— ๋ฌธ์ œ์˜ ํŒจํ‚ค์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

OK https://dotnet.myget.org/F/dotnet-core/api/v2/package/System.Net.Http/4.4.0-beta-24913-02 971ms
Installing System.Net.Http 4.4.0-beta-24913-02.

์ „์ฒด์ ์ธ myget.org ์†๋„ ์ €ํ•˜๋ฅผ ํ™•์‹คํžˆ ์กฐ์‚ฌํ•ด์•ผํ•˜์ง€๋งŒ ์•„๋งˆ๋„์ด ๋ฌธ์ œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์ผ๋ฐ˜์ ์ธ ๊ณ ๊ฐ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์•„๋‹™๋‹ˆ๋‹ค. @maartenba ๊ทธ๊ฒƒ์„ ๋…ผ์˜ํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ์žฅ์†Œ๋Š” ์–ด๋””์ž…๋‹ˆ๊นŒ?
์—ฌ๊ธฐ์—์„œ (์ด ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•ด) ์ฐฝ์˜์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์—”๋“œ ํˆฌ ์—”๋“œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ฐจ๋‹จ ํ•ด์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์ค‘์ ์„ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด @chadwackerman ๋งŒํผ ์‹ฌํ•˜๊ฒŒ ์ฐจ๋‹จ๋˜์—ˆ๋Š”์ง€ ๋˜๋Š” @chadwackerman ์˜ ๊ฒฝํ—˜์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์— ๋น„ํ•ด ๊ทน๋„๋กœ ๋‚˜์œ์ง€

@chadwackerman ์—ฌ๊ธฐ์„œ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ์ข…๋‹จ ๊ฐ„ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฒ€์ฆํ•˜๋Š”

ํ”ผํ•˜๊ณ  ์‹ถ์€ ๋งˆ์ง€๋ง‰ ์ˆ˜๋‹จ์€ ์‹œ๋‚˜๋ฆฌ์˜ค ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์™„์ „ํžˆ ๊ฑด๋„ˆ ๋›ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์—”๋“œ-ํˆฌ-์—”๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ์œ ํšจ์„ฑ์ด ํ™•์ธ๋˜์ง€ ์•Š์œผ๋ฉด ๊ดœ์ฐฎ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ( @maartenba๊ฐ€ ์žˆ๋Š” ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฐ€์ •ํ•˜๋ฉด ๊ท€ํ•˜์˜ ๋งค์šฐ ๋‚˜์œ myget.org ๊ฒฝํ—˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค :().

@karelz ๊ฐ€ Chad์™€ ํ•จ๊ป˜ ์˜คํ”„๋ผ์ธ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•˜๋ฉด ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„ ๋‚ด๋ฉด ์—ฌ๊ธฐ๋กœ ๋‹ค์‹œ๋ณด๊ณ  ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฐ๊ฒฝ ์‚ฌ์‹ค :

  • myget.org ํ”ผ๋“œ๋Š” ๋งค์ผ ๋นŒ๋“œ, CI, dev-workflow ๋“ฑ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งค์ผ ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋Š” ์ด๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (๊ณผ๊ฑฐ์— ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ ๊ฐœ๋ฐœ์ž์˜ ์›Œํฌ ํ”Œ๋กœ์— ์˜ํ–ฅ์„ ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๋™๊ธฐํ™” ์‹œ๊ฐ„์ด 30 ~ 60 ๋ถ„์œผ๋กœ ๋‹จ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค). ๋‚ด ์ดํ•ด๋Š” .NET ํŒ€ ๋˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ˆ„๊ตฌ๋“ ์ง€ VS์—์„œ myget ํ”ผ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋“œ๋ฌผ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. IMO๋Š” ํ•ด๋‹น ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋‚˜์œ ์„ฑ๋Šฅ์ด ๋ˆˆ์— ๋„์ง€ ์•Š๊ฒŒ ๋œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ฌธ์ œ๋Š” 2016/12/9์—์ด ์Šค๋ ˆ๋“œ์˜ ๋™๋ฃŒ์— ์˜ํ•ด ๋‚˜์—๊ฒŒ ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์—์„œ ํ† ๋ก ์— ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋‚ด๋ถ€ ์—์Šค์ปฌ๋ ˆ์ด์…˜์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ํŒ€ (๊ฑฐ์˜ ๋งค์ผ)์— ๊ฑธ์ณ ๋‚ด๋ถ€์ ์œผ๋กœ ์ง€์†์ ์œผ๋กœ ์ถ”์ง„ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@karelz ์˜ˆ, ๊ฐ™์€ ๋‚ ์งœ 2016/12/9์— ๋‚ด๋ถ€ ์—ฐ๋ฝ์„ ํ†ตํ•ด์ด ๋ฌธ์ œ๋ฅผ ์—์Šค์ปฌ๋ ˆ์ด์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌํ›„ ๋ถ„์„ ํ›„ ๊ฐœ์ธ์ ์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ์„ธ๋ถ€ ์ •๋ณด, ์ด๋ฉ”์ผ ๋ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์˜คํ”„๋ผ์ธ์œผ๋กœ ๋งˆ๋ฌด๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ฐœ์ธ์ ์œผ๋กœ, ์•„๋งˆ๋„ ์•Œ์ฝ”์˜ฌ์„ ์‚ฌ์šฉํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” MyGet.org๊ฐ€ ๋™๋ถ€ ๋ฐ ์„œ๋ถ€ ํ•ด์•ˆ์—์žˆ๋Š” ์—ฌ๋Ÿฌ ์นœ๊ตฌ์˜ ์ปดํ“จํ„ฐ์—์„œ ์˜ค์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. Mine์€ ์ตœ๊ทผ Visual Studio 2015๋ฅผ ์ƒˆ๋กœ ์„ค์น˜ํ–ˆ์œผ๋ฉฐ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฉฐ ReSharper๋„ ์—†์Šต๋‹ˆ๋‹ค. Visual Studio์˜ ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๋ฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋„ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์œ ์‚ฌํ•œ ์ง€์—ฐ์„๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋ฅผ ํ•ด์ œํ•˜๊ธฐ ์œ„ํ•ด ์ง€๊ธˆ์€ ์ด๊ฒƒ์„ ๋–จ์–ด ๋œจ๋ฆด ๊ฒƒ์ด์ง€๋งŒ MyGet์ด ์ง€๋ฃจํ•˜์ง€ ์•Š๊ณ  ์ „์ฒด NuGet ํŒจํ‚ค์ง• ์‹œ์Šคํ…œ (๋ฐ NuGet ์ž์ฒด ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ)์ด ํฌ๋ฏธํ•˜๊ฒŒ ๊ณ ๋ฌด ํƒ€๋Š” ๋ƒ„์ƒˆ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ์˜ ์›์ธ์ด๋ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์›๋ž˜ ๊ทผ๋ณธ ์›์ธ์˜ ์ผ๋ถ€๋กœ, ์‹ฌ์ง€์–ด ํ˜„์žฌ๊นŒ์ง€๋„ ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์ œ๊ณตํ•˜๋ ค๋Š” ๋…ธ๋ ฅ์˜ ์ผํ™˜์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์—์„œ ๊ณ„์† ๋…ผ์˜ํ•ด์•ผํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ์—ด์–ด์•ผํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  : ์ƒํƒœ๋ณด๊ณ !

์ด๋ฉ”์ผ์„ ํ†ตํ•ด @chadwackerman ๊ณผ ์—ฐ๋ฝ์„

"๋Š๋ฆผ"์— ๋Œ€ํ•ด-์˜ˆ๋น„ ํ”„๋กœํŒŒ์ผ ๋ง์€ ์ด๊ฒƒ์ด ํŒจํ‚ค์ง€ ๋ฒ„์ „์˜ ์ˆ˜์™€ ํ”„๋กœํ† ์ฝœ ๋ฐ์ดํ„ฐ์˜ ๋‹ค์šด๋กœ๋“œ ํฌ๊ธฐ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ–ˆ์Œ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ถ€ ํŒจํ‚ค์ง€๋Š” ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด 4MB์˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด NuGet ํด๋ผ์ด์–ธํŠธ์—์„œ ํฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๊ธ‰์ฆํ•˜๊ณ  JSON ๋ฐ์ดํ„ฐ์˜ ๋ณดํŠธ๋กœ๋“œ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ 4.0.0 nightlies๊ฐ€ ๋” ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ํ™•์‹คํžˆ ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋˜ํ•œ ํŽ˜์ด์ง€๋กœ๋“œ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊ฒ€ํ† ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” 2 ์ฐจ์ ์ด๋ฉฐ ๋น ๋ฅธ ์„ค์น˜ / ๋ณต์› ์ž‘์—…์ด ์šฐ์„ ์ž…๋‹ˆ๋‹ค).

๋ช‡ ์‹œ๊ฐ„์˜ ์‹คํ—˜ ๋์— Visual Studio๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  System.Net.Http 4.4.0-beta-24913-01๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ 24913-01์—์„œ 24913-02๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ถฉ๋Œ ๋Œ€์‹  ์ ์ ˆํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

2017 ๋…„์ด๋ฉฐ ์ „์ฒด ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ํ•ต์‹ฌ HTTP ๊ตฌ์„ฑ ์š”์†Œ์˜ ์•ผ๊ฐ„ ๋นŒ๋“œ๋ฅผ "์›”์š”์ผ ๋นŒ๋“œ"์—์„œ "ํ™”์š”์ผ ๋นŒ๋“œ"๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด 8 ์ฝ”์–ด i7์—์„œ ๋ฒฝ์‹œ๊ณ„ ์‹œ๊ฐ„์ด 5 ๋ถ„ ์ด์ƒ ๊ฑธ๋ฆฌ๋ฉฐ 4GB ์ด์ƒ์˜ RAM์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ์˜ ํ”„๋กœ์ ํŠธ๋Š” 27 ์ค„์˜ ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์›น ์ž‘์—… (๋ธŒ๋žœ๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋œ ๋ช…๋ น ์ค„ ์•ฑ)์ž…๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ @karelz ๋Š” ์ด๊ฒƒ์ด ์ „์ฒด .NET ํŒ€์—์„œ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ ํ˜„์ง€ ์Šคํƒ€ ๋ฒ…์Šค์—์„œ ๋ผ๋–ผ๋ฅผ ๋งˆ์‹œ๋ฉด์„œ๋„ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋นจ์•„๋“ค์ด๋Š” ๋ฐ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ์˜ ํŒจํ‚ค์ง€๋ฅผ "ํ•ฉ๋ฆฌ์ ์ธ"์‹œ๊ฐ„ (๊ณต์šฉ Wi-Fi ๋„คํŠธ์›Œํฌ์—์„œ)์— ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
https://dotnet.myget.org/F/dotnet-core/api/v2/package/System.Net.Http/4.4.0-beta-24913-02 971ms

๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ๋Œ€์ฒด ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค.

'.NETFramework, Version = v4.6.1'์„ ๋Œ€์ƒ์œผ๋กœํ•˜๋Š” 'webjob'ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จํ•˜์—ฌ 'System.Net.Http.4.4.0-beta-24913-02'ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.
์ข…์†์„ฑ ์ •๋ณด ์ˆ˜์ง‘์— 4.22 ๋ถ„ ์†Œ์š”
DependencyBehavior 'Lowest'๋กœ ํŒจํ‚ค์ง€ 'System.Net.Http.4.4.0-beta-24913-02'์— ๋Œ€ํ•œ ์ข…์†์„ฑ ํ•ด๊ฒฐ ์‹œ๋„
ํŒจํ‚ค์ง€ 'System.Net.Http.4.4.0-beta-24913-02'์„ค์น˜ ์กฐ์น˜ ํ•ด๊ฒฐ
'System.Net.Http.4.4.0-beta-24913-02'ํŒจํ‚ค์ง€ ์„ค์น˜ ์กฐ์น˜๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
System.OutOfMemoryException : 'System.OutOfMemoryException'์œ ํ˜•์˜ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
Newtonsoft.Json.Linq.JContainer.ReadContentFrom (JsonReader r)
Newtonsoft.Json.Linq.JContainer.ReadTokenFrom (JsonReader ๋ฆฌ๋”)
Newtonsoft.Json.Linq.JObject.Load (JsonReader ๋ฆฌ๋”)
NuGet.Protocol.HttpSource. <> c.b__15_0 (์ŠคํŠธ๋ฆผ ์ŠคํŠธ๋ฆผ)

์ด MyGet / NuGet ๋ฌธ์ œ๋ฅผ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋กœ ์˜ฎ๊ฒจ ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์›๋ž˜ ๋ฌธ์ œ์™€๋Š” ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

@onovotny- ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฌ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ด์ œ ๋งค์šฐ ๊ธธ์–ด ๋ฌธ์ œ์˜ ์œ ์šฉ์„ฑ์ด ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ์‹œํ•˜๋Š” ๋Œ€์‹  @richlander ๋Œ€์‹  ์ˆ˜์ • ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๊ณ  ํŠน์ • ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด๋ณด๊ณ  ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋ชจ๋‘๊ฐ€์ด ์ค‘์š”ํ•œ ๋ฌธ์ œ์— ์˜ํ•ด ์ฐจ๋‹จ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์€ ์ˆ˜์ •์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค GitHub ํ•‘ํ์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๋‚ซ์Šต๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋ณด๊ณ  ํ•œ ๋ชจ๋“  ~ 7 ๊ฐœ์˜ ์—”๋“œ-ํˆฌ-์—”๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ (์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋„์›€ ์š”์ฒญ, myget์—์„œ ๋งˆ์Šคํ„ฐ ํŒจํ‚ค์ง€ ์‚ฌ์šฉ ๋‹จ๊ณ„ ์ œ๊ณต)

7 ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ชจ๋‘๊ฐ€ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@richlander ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด์–ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. @karelz ์˜ ์—…๋ฐ์ดํŠธ

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” 4.0.1-rc2-24027์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž‘๋™ํ–ˆ๋˜ Azure Storage API๋กœ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. MyGet์—์„œ ๋‚ด ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์•ฝ 20 ๋ถ„์ด ๊ฑธ๋ ธ์œผ๋ฏ€๋กœ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ๋งŒ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

@onovotny ๋‹ค์‹œ ์—ด์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์—ฌ๊ธฐ์— ์ถ”์ง„๋ ฅ์ด ์žˆ๊ณ  ์ ์–ด๋„ ๋ถ€๋ถ„ ํ•ด์ƒ๋„์—์„œ ๋ช‡ ์ธ์น˜ ๋–จ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ์ง€๊ธˆ ๋ง‰ ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์••๋„์ ์ด์ง€๋งŒ, ๋” ๊นŠ์€ ๋ฌธ์ œ๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋Š” ๋‹ค๋ฅธ ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๋ฌธ์ œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ทธ๋ž˜์•ผํ•ฉ๋‹ˆ๋‹ค. GitHub๋Š” ์ด๋Ÿฐ ์ผ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ ๋กœ์ปฌ ์•ฑ์—์„œ ํ˜ธํ™˜๋˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋†€๋ž„ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•ด๋‹น ์ข…์†์„ฑ์„ ์ž˜๋ผ๋‚ด์–ด ๋‚ด ์›น ์ž‘์—… ํ”„๋กœ์ ํŠธ์— ๋ถ™์—ฌ ๋„ฃ์œผ๋ ค๊ณ ํ–ˆ์ง€๋งŒ Azure์—์„œ ์ž‘๋™ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. Webjob์€ ์ •์ƒ์ ์œผ๋กœ๋กœ๋“œ๋˜์ง€๋งŒ ํŠธ๋ฆฌ๊ฑฐ๋˜๋ฉด ์‹คํŒจํ•˜๊ณ  System.Net.Http๋ฅผ๋กœ๋“œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋‚ด ์ž˜๋ชป์ด๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊ณ ์น  ํ›ˆ๋ จ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €๋Š”์ด ๋ฒ„๊ทธ๊ฐ€ ์ฒ˜์Œ ์—ด๋ ธ์„ ๋•Œ๋กœ ๋Œ์•„ ์™”์Šต๋‹ˆ๋‹ค. ๋น„ํ‹€๊ธฐ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋งต๊ณผ NuGet์„ ๋งŒ์งˆ ๋•Œ ๋ชจ๋“  ์ง€์˜ฅ์ด ํ’€๋ฆฌ๊ณ  ์—„์ฒญ๋‚œ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋Š” ๋กœ์ปฌ์—์„œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜์ง€๋งŒ ๋ฐฐํฌ์‹œ ๋Ÿฐํƒ€์ž„์— ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. .

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ข…์† (Raven.Database) ํŒจํ‚ค์ง€๋Š”์ด ๋ฌธ์ œ์—๋ณด๊ณ  ๋œ๋Œ€๋กœ ๋Ÿฐํƒ€์ž„์— ์ค‘๋‹จ ๋œ WebRequestHandler๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ์šฐ๋ฆฌ ์ฝ”๋“œ๋Š” ์ƒˆ๋กœ์šด HttpClientHandler ์œ ํ˜•๊ณผ ์†์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด์ „์—๋Š” ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜ ์ˆ˜์ •์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ด๋กœ ์ธํ•ด ๋ถ„์Ÿ์ด ๋ฐœ์ƒํ–ˆ๊ณ  ๊ฒฐ๊ตญ ํ•ดํ‚น (๋ฐ˜์‚ฌ ์ฃผ์ž…, ํƒ€์‚ฌ ์ฝ”๋“œ ๋ณต์ œ ๋ฐ ์ˆ˜์ •)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ ํƒ€๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋ชจ๋“  ํ•ดํ‚น ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ–ˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ (๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์šฐ๋ฆฌ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์—”๋“œ ํˆฌ ์—”๋“œ)์ด ๋กœ์ปฌ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค! ์•„์ง Azure ํ”Œ๋žซํผ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜์ด ์ค‘์š”ํ•œ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ๋•Œ Visual Studio ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜๊ณ ์ด ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค (๋‹ค๋ฅธ ํ”ผ๋“œ ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ ํ•œ ๋‹ค์Œ UI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋งค์šฐ ๊ณ ํ†ต ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค).

Update-Package System.Net.Http -Version 4.4.0-beta-24913-02 -Source https://dotnet.myget.org/F/dotnet-core

20 ๊ฐœ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ 6 ๋ถ„ 53 ์ดˆ๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—๋Š” ๋‹ค์Œ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ์ „ํ˜€ ์กฐ์ž‘ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
      </dependentAssembly>
    </assemblyBinding>

ํ•˜์ด ํŒŒ์ด๋ธŒ๋ฅผ ํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค!

@jahmai ๋ช…๋ น ์ค„์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ฐธ์กฐ๋ฅผ 4.0์—์„œ 4.2๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๋ณต์‚ฌ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. System.Net.Http ๋ฐ ์ข…์†์„ฑ์— ๋Œ€ํ•ด ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  Azure์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” System.Net.Http์˜ ํ˜•์‹์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์ข…์†์„ฑ์ž…๋‹ˆ๋‹ค.
ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ Update-Package System.Net.Http -Version 4.4.0-beta-24913-02 -Source https://dotnet.myget.org/F/dotnet-core ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ ์ง€๊ธˆ๊นŒ์ง€ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„์ฃผ ์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค.
์—…๋ฐ์ดํŠธ 4.0.0.0์—์„œ 4.2.0.0์œผ๋กœ์˜ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์ด ์ž๋™์œผ๋กœ ์ ์šฉ๋˜์—ˆ์Œ์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

Nuget / MyGet ๋ฌธ์ œ์™€ ๊ด€๋ จํ•˜์—ฌ์ด ๋‹จ์ผ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๋‹ค์Œ ์ถœ๋ ฅ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์ข…์†์„ฑ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ 37.47 ์ดˆ๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
๋„ˆ๊ฒŸ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ 35.15 ์ดˆ๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
๊ฒฝ๊ณผ ์‹œ๊ฐ„ : 00 : 01 : 14.7537429

์‹œ๊ฐ„๋Œ€ UTC +01 : 00์— ์žˆ์œผ๋ฉฐ MyGet์ด ์–ธ์ œ ๊ฐ€์žฅ ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@pollax ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค (์œ„์˜ ๋งˆ์ง€๋ง‰ ์„ค๋ช… ์ฐธ์กฐ)-ํด๋ผ์ด์–ธํŠธ + ์„œ๋ฒ„ ์กฐํ•ฉ. ๊ฐœ์„ ์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

MyGet์˜ ๋ฒ ํƒ€ System.Net.Http ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ž‘๋™ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • System.Net.Http๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด์žˆ๋Š” .NET 4.6 ์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

Nuget ํŒจํ‚ค์ง€๋ฅผ MyGet์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฐ ์•ฝ 90 ์ดˆ๊ฐ€ ๊ฑธ๋ ธ๊ณ  app.config์˜ bindingRedirect๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋”˜๊ฐ€์— ์„ค๋ช… ๋œ ๊ฒฝ์šฐ ๋” ๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋„์›€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กœ์šด ๋ถ€์ž‘์šฉ : Windows ์ „์šฉ .NET ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ 4.4.0 ๋ฒ ํƒ€๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด Linux์—์„œ .NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

"dotnet ๋ณต์›"์€ ํŒจํ‚ค์ง€ ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์ด 60 ์ดˆ๋กœ ํ•˜๋“œ ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "dotnet publish"์ง€์›๊ณผ ๊ฐ™์€ ํŠน์ • ํ”Œ๋žซํผ ๋งŒ ์„ ํƒํ•  ์ˆ˜์žˆ๋Š” ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ž‘์€ Linux ์ž‘์—…์ž ๋…ธ๋“œ๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋งŽ์€ Windows ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•œ ๋‹ค์Œ MyGet์— ๋„๋‹ฌํ•˜๋ฉด ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜๊ณ  ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋†€๋ž๊ฒŒ๋„ 32GB ์ปดํ“จํ„ฐ์—์„œ Visual Studio๋ฅผ ์ถฉ๋Œ์‹œํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฌธ์ œ๋Š” 0.75GB Linux ์ž‘์—…์ž์—๊ฒŒ ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๋‹ค๋ฅธ ๊ณณ์— ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ์•„์ง ๋ณด์ง€ ๋ชปํ•˜๋”๋ผ๋„์ด ๋ฒ„๊ทธ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๋‚˜๋ฆฌ์˜ค ํ™•์ธ์„ ๋„์™€ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ 5 ๊ฐœ์˜ ํ™•์ธ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค-์ตœ์ƒ์œ„ ๊ฒŒ์‹œ๋ฌผ์˜ ๋งํฌ๊ฐ€์žˆ๋Š” ์ž์„ธํ•œ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด ๊ฐ€๊ธฐ์— ์ถฉ๋ถ„ํ•œ ๊ฒ€์ฆ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • [4.a.ii] ์•„์ง NuGet ๋ถ„์„์„ ์ถ”์  ์ค‘์ž…๋‹ˆ๋‹ค.
  • [5.a] @davidsh ์—๊ฒŒ ๋ฆด๋ฆฌ์Šค
  • [5.b] ๋ฆด๋ฆฌ์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (์ด์‚ฌ ์ˆ˜์ค€์˜ ์Šน์ธ์ด ํ•„์š”ํ•˜์ง€๋งŒ ๊ณ ๊ฐ์—๊ฒŒ ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ๊ณ ๋ คํ•  ๋•Œ ์–ด๋–ค ํ‘ธ์‹œ ๋ฐฑ๋„ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

  • ์ €๋Š” ํŒจ์น˜ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๊ณต์‹ ์ •๋ณด๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค-๋ชจ๋“  ๊ธฐ์ˆ ์  ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋‚˜์—ด ํ•ฉ๋‹ˆ๋‹ค (๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด

๊ทธ๋™์•ˆ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ (์ด ํŠน์ • ๋ฌธ์ œ์™€ ๊ด€๋ จํ•˜์—ฌ) ์šฐ๋ ค ์‚ฌํ•ญ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๊ทธ๋ ‡๊ฒŒ ๋งํ•˜์‹ญ์‹œ์˜ค. ์†๊ฐ€๋ฝ์ด ์—‡๊ฐˆ ๋ ธ๋‹ค.

@onovotny- ๋ฌธ์ œ๊ฐ€ ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ด

@karelz ServiceBus ์ข…์†์„ฑ์ด์žˆ๋Š” 4.6 ๋ช…๋ น ์ค„ (Azure webjob)๊ณผ Azure Batch์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด์žˆ๋Š” 4.6 ์•ฑ์ด ํฌํ•จ ๋œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ์ด ๋ฌธ์ œ์—์„œ ๋ฒ—์–ด๋‚˜๊ธฐ ์œ„ํ•ด ์ด์ „์— .NET Core๋กœ ์ด๋™ ํ•œ AWS ๋ฐ Dropbox์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด์žˆ๋Š” ์„ธ ๋ฒˆ์งธ ์•ฑ (์˜ค๋Š˜ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „ ๋ฒ„์ „์„ ๊ฐ€์ ธ์˜ด).

dotnet ๋ณต์› ๋ฌธ์ œ๋Š” https://github.com/NuGet/Home/issues/2534 , Contributor Covenant ๊ณ ์ • ๋ฐฑ ์ฑ„๋„, ํƒ€์ด์–ด๋Š” https://github.com/Azure/azure-storage-net/issues/372 , MyGet์—์„œ ๋˜์‚ด์•„๋‚ฉ๋‹ˆ๋‹ค. ์ „์†ก ๋œ ๋กœ๊ทธ, https://github.com/dotnet/cli/issues/5328 ์—์„œ ์š”์ฒญ ๋œ ์ถ”๊ฐ€ ์„ฑ๋Šฅ ๋กœ๊ทธ, ๊ทธ๋ฆฌ๊ณ  ์‚ฌํ›„ ํ† ๋ก ์„ ์œ„ํ•ด ๊ฑฐ๋Œ€ํ•œ ํŒ์ฝ˜ ๊ฐ€๋ฐฉ์„ ์ƒ€์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๋„์›€๊ณผ ํ™•์ธ์„ ์œ„ํ•ด @chadwackerman ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋„์ค‘์— ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.
์ตœ์ƒ์œ„ ๊ฒŒ์‹œ๋ฌผ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๋‚ด ๋ชฉ๋ก์—์„œ :

์ €๋Š” ํŒจ์น˜ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๊ณต์‹ ์ •๋ณด๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค-๋ชจ๋“  ๊ธฐ์ˆ ์  ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋‚˜์—ด ํ•ฉ๋‹ˆ๋‹ค (๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด

๋งจ ์œ„์—์žˆ๋Š” ๊ฒŒ์‹œ๋ฌผ์— ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด์žˆ๋Š” ๊ธฐ์ˆ ์  ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ชฉ๋ก (4)์€ "๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์˜ํ–ฅ-์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ"์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ธฐ์ˆ ์  ์ธ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์˜ํ–ฅ์„๋ฐ›๋Š” NuGet ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์ตœ์ƒ์œ„ ๊ฒŒ์‹œ๋ฌผ์— ์„ค๋ช… ๋จ)-์šด ์ข‹๊ฒŒ๋„ ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 4 ๊ฐœ์˜ NuGet ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ :

System.Private.ServiceModel_4.3.0

  • https://www.nuget.org/packages/System.Private.ServiceModel/
  • ์ €์ž : dotnetframework
  • ๋‹ค์šด๋กœ๋“œ : 11K (์ตœ์‹  ๋ฒ„์ „) / 800K (์ „์ฒด)
  • ์„ค๋ช… : ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•œ ๋‚ด๋ถ€ ๊ตฌํ˜„ ํŒจํ‚ค์ง€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ง์ ‘ ์ฐธ์กฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. System.ServiceModel ํŒจํ‚ค์ง€์˜ ๊ตฌํ˜„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ:
  • ์ƒํƒœ : ํŒจํ‚ค์ง€๊ฐ€ ์˜ํ–ฅ์„๋ฐ›์ง€ ์•Š์Œ -WCF ํŒ€์˜ @zhenlan @mconnew ๊ฐ€ .NET Core ๋นŒ๋“œ์—์„œ๋งŒ ์†์„ฑ์„ ์‚ฌ์šฉํ•จ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํ†ฑ์—์„œ๋Š” ๊ธฐ๋ณธ ์ œ๊ณต ๋ฐ์Šคํฌํ†ฑ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

Consul_0.7.2.1

Octopus.Client_4.6.1

Geotab.Checkmate.ObjectModel_5.7.1701

  • https://www.nuget.org/packages/Geotab.Checkmate.ObjectModel/
  • ์ด๋ฆ„ : Geotab SDK
  • ์ €์ž : https://www.nuget.org/profiles/neilcawse
  • ๋‹ค์šด๋กœ๋“œ : 150 (์ตœ์‹  ๋ฒ„์ „) / 10K (์ „์ฒด)
  • ๊ธฐ์ˆ :

    • MyGeotab ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šคํ•˜๊ธฐ์œ„ํ•œ SDK ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

    • https://my.geotab.com/sdk/default.html#/whatsNew ์—์„œ ์ „์ฒด ๋ชฉ๋ก ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„

  • ๋ฉ”๋ชจ:

    • nugget.org๋ฅผ ํ†ตํ•ด ์ž‘์„ฑ์ž (geotab.com CEO)์—๊ฒŒ ์ด๋ฉ”์ผ ์ „์†ก

  • ์ƒํƒœ : ์†Œ์œ ์ž์—๊ฒŒ ์—ฐ๋ฝ ํ•จ, ์‘๋‹ต ๋Œ€๊ธฐ ์ค‘

์˜ํ–ฅ์„๋ฐ›๋Š” ๋ชจ๋“  ํŒจํ‚ค์ง€ ์ž‘์„ฑ์ž์—๊ฒŒ ๋ถˆํŽธ์„ ๋ผ์ณ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

Linux์˜ Visual Studio / NuGet ์ถฉ๋Œ / ์Šค์™€ํ•‘์—์„œ : ๊ทธ ์ด์œ ๋Š” NuGet ํ”„๋กœํ† ์ฝœ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์„œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค : https://github.com/NuGet/Home/issues/4448

MyGet ์ธก์—์„œ๋Š”์ด ์„œ๋ฒ„ ์ธก์„ ์™„ํ™”ํ•˜๋Š” ์ฃผ๋ง (ํ˜„์žฌ ํ…Œ์ŠคํŠธ ์ค‘, 2 ์›” 7 ์ผ ์›”์š”์ผ ETA) ์ดํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐฐํฌ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

MyGet ์ธก์˜ ์ˆ˜์ •์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Visual Studio์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. NuGet.exe๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ https://dotnet.myget.org/F/nuget-build/api/v2/package/NuGet.CommandLine(4.0 nightly)์— ํฌํ•จ ๋œ NuGet.exe๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. 3.5 ๋Š” ์ข…์†์„ฑ์„ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค (ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค). ๊ธฐ๋ก ๋œ ๋ฒ„๊ทธ : https://github.com/NuGet/Home/issues/4512

์ด @maartenba์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„ ๋ณด์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์†Œํ•œ ๋„๊ตฌ ์ˆ˜์ •์œผ๋กœ๋„ ์˜ํ–ฅ์„ ๊ณผ์†Œ ํ‰๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค!

์ „์ฒด .NET ํŒ€์ด Visual Studio ์ถฉ๋Œ๊ณผ NuGet ๋ฌธ์ œ๋ฅผ ๋ชจ๋‘ ๋†“์น  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค.

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

๋ช‡ ๋‹ฌ ๋™์•ˆ ์•„๋ฌด๋„ ์ค‘๋‹จ ์ ์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ํ”Œ๋žซํผ์—์„œ๋Š” ์Šคํƒ ์ถ”์ ๋„ ์–ป์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋‚ด๊ฐ€ ์œ ์ผํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค์ „ 1์‹œ์— ๋นŒ๋“œ ๋žฉ์— ํ˜ธ์ถœ์„ ๋ฐ›๊ณ , ๋ฌธ์„œ๋ฅผ ๋ณธ ์ ๋„์—†๋Š” ํ”„๋กœ์„ธ์„œ์˜ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ๊ฐ€๋“ ์ฐฌ ํ™”๋ฉด์„ ์–ป๊ณ , ์—ญ ์ถ”์ ์„ ํ’€๊ณ  ๋””๋ฒ„๊ฑฐ๊ฐ€ ๋””๋ฒ„๊ฑฐ์— ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋ฒ„์ „์˜ Visual Studio์— ์—ฐ๊ฒฐ๋˜๋Š” ์ƒˆ ๋ฒ„์ „์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ dogfoodํ•˜๋Š” ๋™์•ˆ ํ”„๋กœ์ ํŠธ ํ˜•์‹์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋™์•ˆ ํ”„๋กœ์ ํŠธ ํ˜•์‹์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ํ•„๋ฉธ์ž๋Š” ํ•œ ๋ฒˆ์— ๋„ˆ๋ฌด ๋งŽ์€ ๋ณ€ํ™”๋ฅผ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณต์„ ์‚ฌ๋ฐฉ์— ๊ณ„์† ๋–จ์–ด ๋œจ๋ฆฌ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์™€ ๊ทธ๋“ค ๋ชจ๋‘!

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ชจ๋“  app.config์—์„œ bindingRedirect ์ˆ˜์ •์„์œ„ํ•œ ๊ฐ„๋‹จํ•œ powershell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์›ํ•œ๋‹ค๋ฉด ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ตœ์„ ์˜ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹ˆ์ง€๋งŒ ํ˜„์žฌ ๋งŽ์€ ์›น ์ž‘์—… ํ•˜์œ„ ํ”„๋กœ์ ํŠธ๊ฐ€์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ ์ผ๋ถ€ ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„ ๋ชจ๋“  ํŒŒ์ผ ๋ฐ”์ธ๋”ฉ์„ ์ˆ˜๋™์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ •๋ง ์‹ค๋ง ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

param(
    [string]$SourceDirectory,
    [string]$Package,
    [string]$OldVersion,
    [string]$NewVersion
)

Write-Host "Start fixing all app.config"

[array]$files = get-childitem $sourceDirectory -Include app.config App.config -Recurse | select -expand FullName
foreach ($file in $files)
{
    Write-Host $file
    $xml = [xml](Get-Content $file)
    $daNodes = $xml.configuration.runtime.assemblyBinding.dependentAssembly
    foreach($node in $daNodes)
    {
        if($node.assemblyIdentity.name -eq $package)
        {
            $updateNode = $node.bindingRedirect
            $updateNode.oldVersion = $OldVersion
            $updateNode.newVersion =$NewVersion
        }
    }
    $xml.Save($file)
}

Write-Host "Done"`

์‚ฌ์šฉ ์˜ˆ :
./scripts/FixAppConfig.ps1 -SourceDirectory "--project-path--" -Package "System.Net.Http" -OldVersion "0.0.0.0-4.3.0.0" -NewVersion "4.0.0.0"

์–ธ์ œ ๋‹ค์‹œ ๊ณต๊ฐœ ๋˜๋‚˜์š”? :)

ํ™”์š”์ผ์— release / 1.1.0 ๋ธŒ๋žœ์น˜๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค-ํŒจํ‚ค์ง€ ๋ฒ„์ „ 4.3.1. ๋ธŒ๋žœ์น˜์˜ ๋ชจ๋“  ํŒจํ‚ค์ง€๋Š” ์–ด์ œ ์•ˆ์ •์ ์œผ๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค (๋…๋ฆฝ์  ์ธ ๋…ธ๋ ฅ์ด์ง€๋งŒ ์šฐ๋ฆฌ์—๊ฒŒ๋„ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค :)).
@davidsh ๋Š” myget ํ”ผ๋“œ (ETA : ์˜ค๋Š˜)์—์„œ ์˜จ ์ „์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ ํ•œ ๋‹ค์Œ ์—ฌ๊ธฐ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ (ETA : ์˜ค๋Š˜, EOD)์—์„œ ๋งˆ์ง€๋ง‰ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋นŒ๋“œ์— ๋Œ€ํ•œ ์ตœ์ข… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํŒจํ‚ค์ง€๋ฅผ NuGet์œผ๋กœ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๊ธฐ๋Œ€๋Š” ์ผ์ฃผ์ผ๋„ ์ฑ„ ๊ฑธ๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์™œ ์ด๊ฒƒ์ด ์ตœ์„ ์ด๊ณ  ์œ ์ผํ•œ ํ•ด๊ฒฐ์ฑ…์ธ์ง€ Shiproom์„ ์„ค๋“ํ•ด์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง„ํ–‰๊ณผ ์˜์‚ฌ ์†Œํ†ต์ด ์ง€์—ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ .NET Standard 2.0์—์„œ์ด ๊ธˆ์ง€ ์™ธ ํŒจํ‚ค์ง€๋ฅผ ์™„์ „ํžˆ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ ๋ฐ์Šคํฌํ†ฑ ํ”„๋ ˆ์ž„ ์›Œํฌ๋กœ ์ „๋‹ฌํ•˜๊ธฐ์œ„ํ•œ ๊ณ„ํš (๋ฐฐ์†ก ์‹ค ํ”ผ๋“œ๋ฐฑ ๊ธฐ๋ฐ˜)์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (.NET Core ๊ธฐ๋Šฅ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ). -์ฆ‰, .NET Standard 2.0์„ ๋Œ€์ƒ์œผ๋กœํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฉด์ด ์Šค๋ ˆ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค (1 ~ 2 ์ฃผ ํ›„).

์ด๋Š” ๋ฐ˜๊ฐ€์šด ์†Œ์‹์ด๋ฉฐ netstandard2.0์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidsh ๊ฐ€ ๋ฆด๋ฆฌ์Šค ๋ธŒ๋žœ์น˜์—์„œ 4.3.1 ํŒจํ‚ค์ง€๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค (๊ฒฝ๊ณ  : myget์€ ๊ทธ์—๊ฒŒ ๋งค์šฐ ๋Š ๋ ธ์Šต๋‹ˆ๋‹ค-5 ๋ถ„)
๊ฒ€์ฆ ๋‹จ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

MyGet ๊ฐœ๋ฐœ ํ”ผ๋“œ์—์„œ ์ตœ์‹  ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์‹ญ์‹œ์˜ค. ๋‹น์‹ ์€ System.Net.Http.dll ํŒจํ‚ค์ง€์˜ ์ตœ์‹  STABLE (์•ˆ ์‹œํ—˜ํŒ) ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค - 4.3.1 :
https://dotnet.myget.org/feed/dotnet-core/package/nuget/System.Net.Http

๋ช…๋ น ์ค„ ๋„๊ตฌ ๋˜๋Š” Visual Studio๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NuGet ํŒจํ‚ค์ง€ ์†Œ์Šค ํ”ผ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ฐœ๋ฐœ ํ”ผ๋“œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช…๋ น:

๋ช…๋ น ์ค„ :
nuget.config์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.์š”์†Œ:

<add key="myget.org dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />

๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค:
VS์—์„œ ๋„๊ตฌ-> ์˜ต์…˜-> Nuget ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž-> ํŒจํ‚ค์ง€ ์†Œ์Šค-> ์ถ”๊ฐ€, ์†Œ์Šค์—์„œ ๋‹ค์Œ URL์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. https://dotnet.myget.org/F/dotnet-core/api/v3/index.json

๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ MyGet ๊ฐœ๋ฐœ ํ”ผ๋“œ๋ฅผ ๋ชฉ๋ก์˜ ์ฒซ ๋ฒˆ์งธ ํ”ผ๋“œ๋กœ ๋‚˜์—ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

[ํŽธ์ง‘ํ•˜๋‹ค]
๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ 4.1.1.0์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>

๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ƒ์œ„ ๊ฒŒ์‹œ๋ฌผ '์‹คํ–‰ ๊ณ„ํš'์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

  • 5.c ~ 7 ๊ฐœ์˜ ์—”๋“œ ํˆฌ ์—”๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค (๋Œ€๋ถ€๋ถ„)์˜ ์ตœ์ข… / ๋งˆ์ง€๋ง‰ ๊ฒ€์ฆ-์ด์ „์— (๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ) ๋„์›€์„ ์ค€ ์‚ฌ๋žŒ๋“ค, ์‹œ๋‚˜๋ฆฌ์˜ค ๊ฐ„๋žตํ•œ ์„ค๋ช…์„ ํ™•์ธํ•œ ํ›„ ํšŒ์‹  ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ! (๊ฑฐ์˜ ๋‹ค ์™”์–ด)

    • cc : @ annemartijn0 @karelkrivanek @jahmai @pollax @MikeGoldsmith @chadwackerman @dluxfordhpf @onovotny

  • 5.d myget.org์— ํŒจํ‚ค์ง€ ๊ฒŒ์‹œ

ํ™•์ธ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•  ๋•Œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋กœ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค.

"๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜ ์—…๋ฐ์ดํŠธ ์‹คํŒจ"์˜ค๋ฅ˜๊ฐ€ ํŒจํ‚ค์ง€ ๋ฐ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์˜ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋Š” [๋งˆ์Šคํ„ฐ] ๋ธŒ๋žœ์น˜์˜ ํŒจํ‚ค์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. System.Net.Http.4.4. *๋Š” [master] ๋ถ„๊ธฐ์˜ ํŒจํ‚ค์ง€ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค (.NET Core 2.0 ์‹œํ—˜ํŒ์˜ ์ผ๋ถ€). System.Net.Http์˜ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์€ 4.2. *์ž…๋‹ˆ๋‹ค.

System.Net.Http ๋ฒ„์ „ 4.3.1 ํŒจํ‚ค์ง€๋Š” STABLE (์‹œํ—˜ํŒ์ด ์•„๋‹˜) ํŒจํ‚ค์ง€์ด๋ฉฐ .NET Core 1.1 ์„œ๋น„์Šค ๋ถ„๊ธฐ (.NET Core 1.1.1 ์„œ๋น„์Šค ๋ฆด๋ฆฌ์Šค์™€ ํ˜ธํ™˜ ๊ฐ€๋Šฅ)์—์„œ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์ด ๋‹ค๋ฅธ System.Net.Http dll์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐœ๊ฒฌ ํ•œ ๋ฒ„๊ทธ๋Š” Visual Studio / NuGet์ด System.Net.Http์˜ ๋ณ€๊ฒฝ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด ์†”๋ฃจ์…˜ / ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ์‚ญ์ œ ํ•œ ๋‹ค์Œ ๋‹ค์‹œ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

์ฐธ๊ณ ๋กœ. ๋‚ด ํŒจํ‚ค์ง€ ์„ค์น˜์˜ ๋‚ด ๋กœ๊ทธ :

Attempting to gather dependency information for package 'System.Net.Http.4.3.1' with respect to project 'Net46HttpTest3', targeting '.NETFramework,Version=v4.6.1'
Gathering dependency information took 4.27 min
Attempting to resolve dependencies for package 'System.Net.Http.4.3.1' with DependencyBehavior 'Lowest'
Resolving dependency information took 0 ms
Resolving actions to install package 'System.Net.Http.4.3.1'
Resolved actions to install package 'System.Net.Http.4.3.1'
Retrieving package 'System.Security.Cryptography.Encoding 4.3.0' from 'CoreFx Dev Feed'.
Retrieving package 'System.Security.Cryptography.Primitives 4.3.0' from 'CoreFx Dev Feed'.
Retrieving package 'System.Security.Cryptography.Algorithms 4.3.0' from 'CoreFx Dev Feed'.
Retrieving package 'System.Security.Cryptography.X509Certificates 4.3.0' from 'CoreFx Dev Feed'.
Retrieving package 'System.Net.Http 4.3.1' from 'CoreFx Dev Feed'.
  GET https://dotnet.myget.org/F/dotnet-core/api/v2/package/System.Net.Http/4.3.1
Adding package 'System.Security.Cryptography.Encoding.4.3.0' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
Added package 'System.Security.Cryptography.Encoding.4.3.0' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
  OK https://dotnet.myget.org/F/dotnet-core/api/v2/package/System.Net.Http/4.3.1 302ms
Installing System.Net.Http 4.3.1.
Added package 'System.Security.Cryptography.Encoding.4.3.0' to 'packages.config'
Successfully installed 'System.Security.Cryptography.Encoding 4.3.0' to Net46HttpTest3
Adding package 'System.Security.Cryptography.Primitives.4.3.0' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
Added package 'System.Security.Cryptography.Primitives.4.3.0' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
Added package 'System.Security.Cryptography.Primitives.4.3.0' to 'packages.config'
Successfully installed 'System.Security.Cryptography.Primitives 4.3.0' to Net46HttpTest3
Adding package 'System.Security.Cryptography.Algorithms.4.3.0' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
Added package 'System.Security.Cryptography.Algorithms.4.3.0' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
Added package 'System.Security.Cryptography.Algorithms.4.3.0' to 'packages.config'
Successfully installed 'System.Security.Cryptography.Algorithms 4.3.0' to Net46HttpTest3
Adding package 'System.Security.Cryptography.X509Certificates.4.3.0' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
Added package 'System.Security.Cryptography.X509Certificates.4.3.0' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
Added package 'System.Security.Cryptography.X509Certificates.4.3.0' to 'packages.config'
Successfully installed 'System.Security.Cryptography.X509Certificates 4.3.0' to Net46HttpTest3
Adding package 'System.Net.Http.4.3.1' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
Added package 'System.Net.Http.4.3.1' to folder 'c:\users\dshulman\documents\visual studio 2015\Projects\Net46HttpTest3\packages'
Added package 'System.Net.Http.4.3.1' to 'packages.config'
Successfully installed 'System.Net.Http 4.3.1' to Net46HttpTest3
Executing nuget actions took 2.41 sec
========== Finished ==========
Time Elapsed: 00:06:40.8451462

ํ , ํ…Œ์ŠคํŠธ ํ•  ๋•Œ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. 4.3.1๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  web.config์—์„œ ๋‹ค์Œ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>

์˜ˆ์ƒ?
์•„๋งˆ๋„ ์Šค๋ ˆ๋“œ์˜ ์ดˆ๊ธฐ์— ๋ญ”๊ฐ€๋ฅผ ๋†“์ณค๊ฑฐ๋‚˜ ์ด๊ฒƒ์€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ํŒจํ‚ค์ง€ ๋ฒ„์ „ ๋Œ€ dll ๋ฒ„์ „ ๋ฏธ์Šค ๋งค์น˜ ์ƒํ™ฉ ์ค‘ ํ•˜๋‚˜ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ์ œ๊ฑฐํ•œ ๋‹ค์Œ ๋‹ค์‹œ ์„ค์น˜ํ–ˆ๋Š”๋ฐ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

Works On My Machine โ„ข ๏ธ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰.

๋ง๋ถ™์—ฌ์„œ ๋‚˜๋Š” ์™œ์ด ๋ฒ„์ „์ด 4.4์—์„œ 4.3.1๋กœ ๋–จ์–ด์กŒ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

4.4 ๋ฒ„์ „์ด ์ตœ์‹  ๋ฒ„์ „์ด์ง€๋งŒ ์•„์ง ์‹œํ—˜ํŒ์ด๋ฉฐ .NET Core 2.0์˜ ์ผ๋ถ€๋กœ ๋ฐฐ์†ก ๋  ์˜ˆ์ •์ด๋ฏ€๋กœ ๋ฒ„์ „์€ ๋ฒˆํ˜ธ ๋งค๊ธฐ๊ธฐ์—์„œ ์ œ์™ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @karelz ๋Š” ์ˆ˜์ •์ด ๋จผ์ € ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒจํ‚ค์ง€๋ฅผ ๋จผ์ € ํ…Œ์ŠคํŠธ ํ•ด๋‹ฌ๋ผ๊ณ  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค.

4.3. * ํŒจํ‚ค์ง€๋Š” RTM .NET Core 1.1์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์„œ๋น„์Šค ๋ฆด๋ฆฌ์Šค๊ฐ€์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ์—…๋ฐ์ดํŠธ ๋œ ํŒจํ‚ค์ง€๋Š” System.Net.Http์˜ ๊ฒฝ์šฐ 4.3.1์ž…๋‹ˆ๋‹ค (.NET Core 1.0 ํŒจํ‚ค์ง€๋Š” System.Net.Http์˜ ๊ฒฝ์šฐ 4.3.0 ์ด์—ˆ์œผ๋ฏ€๋กœ).

์•„๋งˆ๋„ ์Šค๋ ˆ๋“œ์˜ ์ดˆ๊ธฐ์— ๋ญ”๊ฐ€๋ฅผ ๋†“์ณค๊ฑฐ๋‚˜ ์ด๊ฒƒ์€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ํŒจํ‚ค์ง€ ๋ฒ„์ „ ๋Œ€ dll ๋ฒ„์ „ ๋ฏธ์Šค ๋งค์น˜ ์ƒํ™ฉ ์ค‘ ํ•˜๋‚˜ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์ด๊ฒƒ์€ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. NuGet ํŒจํ‚ค์ง€ ๋ฒ„์ „์€ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ .NET ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „๊ณผ ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

System.Net.Http 4.3.1 NuGet ํŒจํ‚ค์ง€์˜ ๊ฒฝ์šฐ 4.1.1.0 ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์ด์žˆ๋Š” System.Net.Http ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—”๋“œ ํˆฌ ์—”๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฒ€์ฆ ํ•ด ์ฃผ์‹  @pollax ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค (์ตœ์ƒ์œ„ ๊ฒŒ์‹œ๋ฌผ ์—…๋ฐ์ดํŠธ ๋จ).
nuget.org์—์„œ ์ตœ์ข… ์ˆ˜์ • ์‚ฌํ•ญ์œผ๋กœ ์ถœ์‹œํ•˜๊ธฐ ์ „์— ๋ช‡ ๊ฐ€์ง€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋” ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์นจ์—์„œ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์„ ๋†“์นœ ๊ฒƒ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค (์ž ์žฌ์  ์ธ GAC๋กœ ์ธํ•ด ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์ด ์ž๋™์œผ๋กœ ์ถฉ๋Œํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค).
๋˜ํ•œ myget์ด myget์˜ ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. myget์—์„œ ๋‹จ์ผ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๋‹จ๊ณ„๊ฐ€ ์žˆ๋Š”์ง€ ๋‚ด๋ถ€์ ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ์—ฐ๋ฝ์„ ์ทจํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ ํ–ฅํ›„ ๊ฒ€์ฆ์„ ์œ„ํ•ด.

@davidsh ๋‚ด๊ฐ€ OOF ์ธ ๋™์•ˆ ์ข…๋‹จ ๊ฐ„ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์กฐ์ • ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ~ 3 ๊ฐœ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด @leecow / @weshaggard ์—๊ฒŒ nuget.org ์— ํŒจํ‚ค์ง€๋ฅผ ๊ฒŒ์‹œํ•˜๋„๋ก ์š”์ฒญํ•˜์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌ!

์–˜๋“ค ์•„,

์ฃผ์ œ์—์„œ ์•ฝ๊ฐ„ ๋ฒ—์–ด ๋‚ฌ์ง€๋งŒ ์—ฌ๊ธฐ์„œ ํŒ€์— ํ•œ๋งˆ๋””ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋งค์šฐ ํ™œ๋ฐœํ–ˆ๊ณ  ๋ฐ˜์‘์€ ๋•Œ๋•Œ๋กœ ์ ๋Œ€์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ ๋Œ€๊ฐ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ €๋Š” ์—ฌ๊ธฐ์˜ ๊ฐœ๋ฐœํŒ€์ด ์ˆ˜์—…๊ณผ ํ•จ๊ป˜ ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ–ˆ๋‹ค๊ณ  ๋Š๋‚๋‹ˆ๋‹ค.

์ง€์› ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์ณ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฒ„์ „์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ๋˜ ๋‹ค๋ฅธ ํ™•์ธ์ž…๋‹ˆ๋‹ค.

KeyVault๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 4.3.1๋กœ ์ถฉ๋Œํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, SignalR์—์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ System.Net.Http 4.3.1์€ ์–ด๋–ป๊ฒŒ ์–ป์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋‹จ์ง€ 4.3.0 in
https://www.nuget.org/packages/System.Net.Http/

์•„์ฐจ, CoreFx์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋†“์นœ - https://dotnet.myget.org/F/dotnet-core/api/v3/index.json

๋‚ด SignalR ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ํ”ผ๋“œ๋Š” ๋งค์šฐ ๋Š๋ฆฝ๋‹ˆ๋‹ค. 4.3.1์ด ์ผ๋ฐ˜ ๋„ˆ๊ฒŸ ์ฑ„๋„์— ๋“ค์–ด๊ฐˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํ† ์š”์ผ ์˜คํ›„ 1์‹œ 30 ๋ถ„, ์›Œ ... (์ถœ๋ฐœ๊นŒ์ง€ 8 ๋ถ„)


'.NETFramework, Version = v4.6'์„ ๋Œ€์ƒ์œผ๋กœํ•˜๋Š” 'TranslateKumquat.Translate.Tests'ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จํ•˜์—ฌ 'System.Net.Http.4.3.1'ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.
์ข…์†์„ฑ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ 5.85 ๋ถ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
DependencyBehavior 'Lowest'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 'System.Net.Http.4.3.1'ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ํ•ด๊ฒฐํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ์กด packages.config ํŒŒ์ผ์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ํŒจํ‚ค์ง€ ์ข…์†์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์ด ๊ฐ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋ชจ๋“  ์ข…์†์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์„ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒฝ์šฐ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฌด์‹œ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ํ˜„์žฌ ํŒจํ‚ค์ง€ ์ž‘์—…์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 'System.Net.Http 4.3.0'
์ข…์†์„ฑ ์ •๋ณด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ 0ms๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
'System.Net.Http.4.3.1'ํŒจํ‚ค์ง€ ์„ค์น˜ ์กฐ์น˜ ํ•ด๊ฒฐ
'System.Net.Http.4.3.1'ํŒจํ‚ค์ง€ ์„ค์น˜ ์กฐ์น˜ ํ•ด๊ฒฐ

'.NETFramework, Version = v4.6'์„ ๋Œ€์ƒ์œผ๋กœํ•˜๋Š” 'DictKumquat.Dict.CE.Tests'ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จํ•˜์—ฌ 'System.Net.Http.4.3.1'ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.
์ข…์†์„ฑ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ 3.84 ๋ถ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
DependencyBehavior 'Lowest'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 'System.Net.Http.4.3.1'ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ํ•ด๊ฒฐํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ์กด packages.config ํŒŒ์ผ์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ํŒจํ‚ค์ง€ ์ข…์†์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์ด ๊ฐ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋ชจ๋“  ์ข…์†์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์„ ํ•ด๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒฝ์šฐ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฌด์‹œ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ํ˜„์žฌ ํŒจํ‚ค์ง€ ์ž‘์—…์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 'System.Net.Http 4.3.0'
์ข…์†์„ฑ ์ •๋ณด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ 0ms๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
'System.Net.Http.4.3.1'ํŒจํ‚ค์ง€ ์„ค์น˜ ์กฐ์น˜ ํ•ด๊ฒฐ
'System.Net.Http.4.3.1'ํŒจํ‚ค์ง€ ์„ค์น˜ ์กฐ์น˜ ํ•ด๊ฒฐ

@karelz Azure Storage API ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ MyGet์˜ 4.3.1 ๋ฒ„์ „์œผ๋กœ ์žฌ ๊ฒ€์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋” ๋นจ๋ฆฌ ์‘๋‹ตํ•˜์ง€ ์•Š์•„์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

@tofutim ์ข…์†์„ฑ์„ ์ˆ˜์ง‘ ์ด์œ ๋กœ ์ธํ•ด ์œ ์„ ์œผ๋กœ๊ฐ€๋Š” ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŽ์ด ๋Š๋ฆฝ๋‹ˆ๋‹ค - https://github.com/NuGet/Home/issues/4448

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ƒ๊ฐํ–ˆ๋‹ค. nuget.org๋กœ ๊ฐ€์ ธ ์˜ค๊ธฐ์œ„ํ•œ ETA๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@davidsh ์•ˆ๋…•ํ•˜์„ธ์š” David, ์ด๋ฒˆ ์ฃผ 4.3.1์ด ๋„ˆ๊ฒŸ์œผ๋กœ ๋งŒ๋“ค๊นŒ์š”? ๋‚˜๋Š” ์ƒ๋‹นํžˆ ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ํ”„๋กœ์ ํŠธ์˜ ํŒจํ‚ค์ง€ ์ˆ˜์— ๋”ฐ๋ผ ํ™•์žฅ๋˜์–ด์•ผํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๊ณ ์น˜๋Š” ๊ฒƒ์ด์—†๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค. nupkg๋ฅผ ์–ด๋”˜๊ฐ€์— ๋ณต์‚ฌ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

'.NETFramework, Version = v4.6'์„ ๋Œ€์ƒ์œผ๋กœํ•˜๋Š” 'qi'ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จํ•˜์—ฌ 'Kumquat.Translate.8.6.2'ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.
์ข…์†์„ฑ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ 8.76 ๋ถ„์ด ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ 8.76 ๋ถ„

@davidsh ์ด๊ฒƒ์€ OwlMQ ๋ฉ”์ผ ๋ง๋ฆฌ์ŠคํŠธ์— ๋ฐฉ๊ธˆ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ ๋œ ํŒจํ‚ค์ง€๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ ๋ณด๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ž์„œ๊ฐ€๋Š” ํŒ€์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ฉ‹์ง„ ์ผ!

ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

System.Net.Http 4.3.1 ํŒจํ‚ค์ง€๊ฐ€ NuGet.org๋กœ ์Šน๊ฒฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

https://www.nuget.org/packages/System.Net.Http/4.3.1

ํ , ๋งค์šฐ ๊ธฐ๊ดดํ•จ-RavenDB ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด์ œ 4.1.1 ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๊ณ  ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘ :์ฃผ์˜ ์‚ฌํ•ญ-Acme.Core๋Š” RavenDB.Client๋ฅผ ์ฐธ์กฐํ•˜๊ณ  Acme.Main์€ Acme.Core๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. VS2015๋Š” System.Net.Http๋ฅผ ์ข…์†์„ฑ์œผ๋กœ ๋ณต์‚ฌํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค-> ๋ถ. ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์ž…๋‹ˆ๊นŒ? ๋ฌผ๋ก  ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...

ํ•ด๊ฒฐ ๋œ๋Œ€๋กœ ๋ฌธ์ œ๋ฅผ ์ข…๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ž‘์—… ํ•ด ์ฃผ์‹  @davidsh ์™€ @CIPop ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
์ธ๋‚ด์‹ฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ง€์—ฐ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„ : ์‚ฌํ›„ ๋ถ„์„ (์•ฝ์†๋Œ€๋กœ)-์—ฌ๊ธฐ ์ฃผ๋ณ€์˜ ๋ชจ๋“  ์—ญ์‚ฌ์  ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด 2 ์ฃผ ์ •๋„ ๊ธฐ๋‹ค๋ ค์ฃผ์„ธ์š”.

@georgiosd ์ƒˆ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๊ณ  ์žฌํ˜„์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (์ด์ƒ์ ์œผ๋กœ๋Š” ์ƒˆ ํ”„๋กœ์ ํŠธ๋กœ ์‹œ์ž‘)

@karelz ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ฐธ๊ณ  :

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

@karelz ๋น ๋ฅธ ์งˆ๋ฌธ : ์‚ฌํ›„ ๋ถ„์„์ด ์™„๋ฃŒ๋˜๋ฉด ์–ด๋””์—์„œ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ์Šค๋ ˆ๋“œ์—์„œ _or_ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ / ์žฅ์†Œ?

@PureKrome ๋‚˜๋Š” ํ™•์‹คํžˆ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค-์ด๋ฏธ ๊ด€์‹ฌ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์•Œ๋ฆผ์„๋ฐ›๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‚ด ๋ชฉํ‘œ๋Š” ์‚ฌํ›„ ๋ถ„์„์„ ๊ฒฝ์‹œํ•˜์ง€ ์•Š๊ณ  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ˆจ๊ธฐ์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” ํ† ๋ก ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค (์˜ˆ์ƒ๋Œ€๋กœ) ;-).
๋†’์€ ์ˆ˜์ค€์—์„œ ๋‹ค์Œ์„ ๋‹ค๋ฃฐ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

  1. ๋ฌธ์ œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ถœ์‹œ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ์•ž์œผ๋กœ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์–ด๋–ป๊ฒŒ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
  2. ์ˆ˜์ •ํ•˜๋Š” ๋ฐ 6 ๊ฐœ์›”์ด ๊ฑธ๋ฆฐ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์™œ ์ด์ „์—๋Š” ์˜ํ–ฅ๋ ฅ์ด ํฐ ๋ฌธ์ œ๋กœ ์ทจ๊ธ‰ / ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? ๋ฏธ๋ž˜์— ์˜ํ–ฅ์ด ํฐ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ์ธ์‹ํ•˜๊ณ  ๋Œ€์‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  3. ๊ธฐํƒ€ ๋ฌธ์ œ (์˜ˆ : ์ „๋ฐ˜์ ์ธ ์˜์‚ฌ ์†Œํ†ต)

๋˜ํ•œ 4.3.1์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด (์˜ˆ : @georgiosd 's find above ), ์—ฌ๊ธฐ์—์„œ ์ธ์‹์„ ์œ„ํ•ด ์–ธ๊ธ‰ํ•ด์•ผํ•˜์ง€๋งŒ,๋ณด๋‹ค ์‰ฌ์šด ํ† ๋ก  / ํ›„์† ์กฐ์น˜๋ฅผ ์œ„ํ•ด ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋ณ„๋„์˜ ๋ฌธ์ œ๋กœ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@karelz (๋ฐ MS ํŒ€)์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ณ„์† ๊ตฌ๋…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘

์ข‹์€ ์‹ธ์›€์„ ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค, ํŒ€! ๐Ÿ’ฏ

๋‚˜๋Š” ๋˜ํ•œ @ chadwackerman2 ์—๊ฒŒ ๊ฐ์‚ฌํ•ด์•ผํ•œ๋‹ค

.NET ์—ญ์‚ฌ์ƒ ๊ฐ€์žฅ ์„ฑ๊ฐ€์‹  ๋ฒ„๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ํ•ด๊ฒฐ ํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ถ•ํ•˜๋“œ๋ฆฝ๋‹ˆ๋‹ค. :)

@karelz ๊ทธ๋ ‡๊ฒŒ

@georgiosd ๋ชจ๋ฅด๊ฒ ์–ด์š”-๋ณ„๋„์˜ ๋ฌธ์ œ์—์„œ ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค ;-) (์˜ฌ๋ฐ”๋ฅธ ์ „๋ฌธ๊ฐ€

์ด ์ž‘์—…์„ ๋„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, @karelz

์ œ๊ฐ€ ์‚ฌํ›„ ๋ถ€๊ฒ€์— ๋Šฆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ์žŠ์ง€ ์•Š์•˜๋‹ค, ๋‚˜๋Š” ๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋กœ ์ธํ•ด ์•„์ง ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
์•ž์œผ๋กœ 1-2 ์ฃผ ์•ˆ์— ์‚ฌํ›„ ๋ถ€๊ฒ€์„ ๋๋‚ด๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋ชจ๋‘ ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. Cant๋Š” ๋‚ด๊ฐ€ ๋ชจ๋“  ๋„ˆํŠธ์™€ ๋ณผํŠธ๋ฅผ ์ดํ•ดํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์€ ์†”๋ฃจ์…˜์„ VS 2015 Update 3์—์„œ VS 2017๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์„ ๋•Œ๋งŒ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ์˜ ์†”๋ฃจ์…˜์€ ASP.Net Core ํ”„๋กœ์ ํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœํ•˜๋Š” ์„ธํŠธ์˜€์Šต๋‹ˆ๋‹ค. .net ํ”„๋ ˆ์ž„ ์›Œํฌ 4.6. Azure KeyVaultClient๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๋งˆ์›Œ, Donal

์•ˆ๋…•ํ•˜์„ธ์š” @karelz , ์ €๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์ดํ‹€ ์—ฐ์† ์—ฐ๊ตฌํ•˜๊ณ  ์ž‘์—…ํ–ˆ์ง€๋งŒ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  System.Net.Http ํŒจํ‚ค์ง€๊ฐ€ ๋ฒ„์ „ 4.3.1๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ œ๋ฐœ ๋„์™€์ฃผ์„ธ์š”, ๋‚˜๋Š” ๋‹ค๋ฅธ ๋ฌด์—‡์„ ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ ์–ด๋””๋กœ ๊ฐ€์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

FileNotFoundException : ํŒŒ์ผ ๋˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ 'System.Net.Http, ๋ฒ„์ „ = 4.1.1.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'๋ฅผ๋กœ๋“œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์ด ์ง€์ •๋œ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋‚ด .csproj


netcoreapp1.1


$ (PackageTargetFallback); portable-net45 + win8 + wp8 + wpa81;


aspnet-IbmVcaCore-5aa05652-04e7-4a42-9fd6-8dbc1c8b98fe






















































































































































































































































@parismiguel :(. ์•ฑ์— 4.0.0.0์—์„œ 4.1.1.0์œผ๋กœ bindingRedirects๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

<dependentAssembly> 
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" /> 
</dependentAssembly> 

bindingRedirects ์Šคํ† ๋ฆฌ๋ฅผ ๋” ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/dotnet/corefx/issues/9846#issuecomment -287941109

์—…๋ฐ์ดํŠธ : ์˜ค๋ฅ˜๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋ฌธ์ œ๋Š” 4.1.1.0 ๋ฒ„์ „์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์ด ์‹ค์ œ๋กœ ์žˆ๋Š”์ง€ ์•ฑ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋น ๋ฅธ @karelz , ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด์ „ ๊ฒŒ์‹œ๋ฌผ์—์„œ bindingRedirects ํ•ญ๋ชฉ์„ ๋ณด์•˜์ง€๋งŒ ์–ด๋””์— ๋ฐฐ์น˜ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค ... .csproj ๋‚ด๋ถ€์—์„œ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ฒ„์ „ 4.1.1.0๊ณผ ๊ด€๋ จํ•˜์—ฌ ์˜ค๋ฅ˜ (.txt๋กœ ์ฒจ๋ถ€)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. m ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์š” ... 4.3.1๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์•ˆ ๋˜๋‚˜์š”?

IbmVcaCore.csproj.txt

๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜์€ app.config ๋˜๋Š” web.config ํŒŒ์ผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
https://msdn.microsoft.com/en-us/library/7wd6ex19 (v = vs.110) .aspx

์•ˆ๋…•ํ•˜์„ธ์š” @davidsh , ๋„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
๋‚ด ํ”„๋กœ์ ํŠธ์— ํ•ด๋‹น ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. Visul Studio 2017 ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋Š” NET Core ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

image 1

Re : 4.3.1 vs. 4.1.1-4.3.1์€ NuGet ํŒจํ‚ค์ง€ ๋ฒ„์ „, 4.1.1.0์€ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค (ildasm / ILSpy / VS๊ฐ€ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค).
NuGet ๋ฒ„์ „๊ณผ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฒ„์ „์€ ์•ฝ๊ฐ„ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์–ด๋Š ๋ฒ„์ „์— ์†ํ•˜๋Š”์ง€ ์—ฐ๊ฒฐํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ (์˜ˆ : NuGet ํŽ˜์ด์ง€)๋ฅผ ํ†ตํ•ด ์ ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜์žˆ๋Š” ๊ฒฝ์šฐ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณผ ์‚ฌํ•ญ ๋ชฉ๋ก์— ์žˆ์Šต๋‹ˆ๋‹ค.

.NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ bindingRedirects๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ์ด ๋ฌธ์ œ๋Š” ์ „ํ˜€ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋ฐ์Šคํฌํ†ฑ (= .NET Framework)์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
4.3.1 NuGet ํŒจํ‚ค์ง€๋Š” .NET Core ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋ฐ์Šคํฌํ†ฑ ์–ด์…ˆ๋ธ”๋ฆฌ ๋งŒ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ์ƒˆ ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜๊ณ  ์ €๋ฅผ ํƒœ๊ทธ ํ•ด์ฃผ์„ธ์š”. ์ด ๋ฌธ์ œ๋Š” ์ƒ๋‹นํžˆ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํผ์ ธ ๋‚˜๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (์ถฉ๊ฒฉ์  ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์—), ๊ท€ํ•˜์˜ ๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค (์ ์–ด๋„ ๊ทธ๋ ‡๊ฒŒ ๋ณด์ž„). ๋ชจ๋“  ์‚ฌ๋žŒ์˜ GH ์•Œ๋ฆผ /๋ฐ›์€ ํŽธ์ง€ํ•จ์— ์นœ์ ˆํ•˜๊ฒŒ ๋Œ€ํ•ฉ์‹œ๋‹ค.

๋ชจ๋‘์—๊ฒŒ : ์ €๋Š” ์ œ๊ฐ€ ์•ฝ์† ํ•œ ์‚ฌํ›„ ๋ถ„์„์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์ด์Šˆ dotnet / corefx # 17522๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
์Šฌํ”„๊ฒŒ๋„ ์•„์ง ๊ทธ๋‹ค์ง€ ์ง„์ „์„ ์ด๋ฃจ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค :( ... ์ ์–ด๋„ ๊ด€์‹ฌ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์€์ด ๋ฌธ์ œ๋ฅผ ๋”ฐ๋ฅด๊ณ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž ์žฌ์  ์ธ ์†Œ์Œ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์‚ฌ๋žŒ๋“ค์ด ๊ด€์‹ฌ์žˆ๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค).

@karelz ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์ง€์นจ์— ๋”ฐ๋ผ ๊ท€ํ•˜์˜ ์ƒˆ๋กœ์šด ๋ฌธ์ œ ์ถ”์ ๊ธฐ์— ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌธ์•ˆ ์ธ์‚ฌ.

@parismiguel์ด ๋‚ด๊ฐ€ ๋งŒ๋“  ์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค. ๋‚ด๊ฐ€ ๋งŒ๋“  ๊ฒƒ (# 17522)์€์ด ๋ฌธ์ œ (# 11100)๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ ์‚ฌํ›„ ๋ถ„์„์„์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@karelz ์—๊ฒŒ ๊ฐ์‚ฌ

๋‚˜๋Š” ์™„๋ฒฝํ•œ ํญํ’์„ ํ†ตํ•ด ์ด๊ฒƒ์„ ๋งŒ๋‚œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Azure Key Vault (2.0.6) ๋ฐ Octopus Client (4.15.3)์˜ ์กฐํ•ฉ๊ณผ ํ•จ๊ป˜ Azure Functions ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

System.Net.Http ์—์„œ 4.3.2 ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ Key Vault ๋ฅผ) ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ•˜๋ฉด ์—ฌ์ „ํžˆ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

ํŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฟก๋ฟก

4.3.2 ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€์˜ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ๋Ÿฐํƒ€์ž„์— ์‚ฌ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (4.3.1์—์„œ ์ˆ˜์ • ๋จ)

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