Restsharp๋ Host ํค๋ ๊ฐ์ ํฌํธ๋ฅผ ์์ ํ์ง ์๊ณ Host ํค๋๋ฅผ ๊ทธ๋๋ก ๋ณด๋ด์ผ ํฉ๋๋ค.
https://github.com/minio/minio-dotnet/pull/212 ๋ Restsharp.Netcore(.netcore๋ฅผ ์ง์ํ๋ ๋น๊ณต์ ๋ฒ์ ) ๋์ Restsharp 106.2.1์ ๊ฐ์ ธ์ต๋๋ค. ๊ทธ๋ฌ๋ minio dotnet sdk์์ ์ฌ์ฉํ๋ ์ฌ์ฉ์ ์ง์ ์ธ์ฆ์๊ฐ "Host" ํค๋์ ๊ฐ์ผ๋ก ip:port๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ ์๋ช
์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์๋ช
๋ถ์ผ์น ์ค๋ฅ๊ฐ ๋ฐ๊ฒฌ๋์์ต๋๋ค. ์๋ฒ ์ถ์ ์ด ํธ์คํธ ํค๋ ๊ฐ์ ip๋ง ํ์ํ๊ธฐ ๋๋ฌธ์ Restsharp httpclient๊ฐ ํฌํธ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํฌํธ๋ Restsharp 106.2.1์ "ํธ์คํธ" ํค๋ ๊ฐ์์ ์ ๊ฑฐ๋ฉ๋๋ค.
minio-dotnet client side trace
---------------------------------------
Full URL of Request http://192.168.1.157:9000/
Request completed in 90.1376 ms, Request: {
"resource": "/",
"parameters": [
{
"name": "x-amz-content-sha256",
"value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"type": "HttpHeader"
},
{
"name": "Host",
"value": "192.168.1.157:9000",
"type": "HttpHeader"
},
{
"name": "x-amz-date",
"value": "20180221T205958Z",
"type": "HttpHeader"
},
{
"name": "Authorization",
"value": "AWS4-HMAC-SHA256 Credential=minio/20180221/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=db0fbcc9aa66975a530a2621962a87787559289a218da881420686263da862df",
"type": "HttpHeader"
},
{
"name": "Accept",
"value": "application/json, application/xml, text/json, text/x-json, text/javascript, text/xml",
"type": "HttpHeader"
}
],
"method": "GET",
"uri": "http://192.168.1.157:9000/"
}, Response: {
"statusCode": 403,
"content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><Key></Key><BucketName></BucketName><Resource>/</Resource><RequestId>3L137</RequestId><HostId>3L137</HostId></Error>",
"headers": [
{
"Name": "Accept-Ranges",
"Value": "bytes",
"Type": 3,
"ContentType": null
},
{
"Name": "Server",
"Value": "Minio/DEVELOPMENT.GOGET, (linux; amd64)",
"Type": 3,
"ContentType": null
},
{
"Name": "Vary",
"Value": "Origin",
"Type": 3,
"ContentType": null
},
{
"Name": "X-Amz-Request-Id",
"Value": "151572E9DCF94747",
"Type": 3,
"ContentType": null
},
{
"Name": "Date",
"Value": "Wed, 21 Feb 2018 20:59:58 GMT",
"Type": 3,
"ContentType": null
},
{
"Name": "Transfer-Encoding",
"Value": "chunked",
"Type": 3,
"ContentType": null
},
{
"Name": "Content-Type",
"Value": "application/xml",
"Type": 3,
"ContentType": null
}
],
"responseUri": "http://192.168.1.157:9000/",
"errorMessage": null
}
I'm not handling the Minio.Exceptions.MinioException.
Unhandled Exception: System.AggregateException: One or more errors occurred. (Minio API responded with message=The request signature we calculated does not match the signature you provided. Check your key and signing method.) (Minio API responded with message=The request signature we calculated does not match the signature you provided. Check your key and signing method.) ---> Minio.Exceptions.MinioException: Minio API responded with message=The request signature we calculated does not match the signature you provided. Check your key and signing method.
at Minio.MinioClient.ParseError(IRestResponse response) in /home/kris/code/minio-dotnet/Minio/MinioClient.cs:line 475
at Minio.MinioClient.<>c.<.ctor>b__78_0(IRestResponse response) in /home/kris/code/minio-dotnet/Minio/MinioClient.cs:line 70
at Minio.MinioClient.HandleIfErrorResponse(IRestResponse response, IEnumerable`1 handlers, DateTime startTime) in /home/kris/code/minio-dotnet/Minio/MinioClient.cs:line 502
at Minio.MinioClient.<ExecuteTaskAsync>d__81.MoveNext() in /home/kris/code/minio-dotnet/Minio/MinioClient.cs:line 349
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Minio.MinioClient.<ListBucketsAsync>d__0.MoveNext() in /home/kris/code/minio-dotnet/Minio/ApiEndpoints/BucketOperations.cs:line 52
--- End of inner exception stack trace ---
at System.AggregateException.Handle(Func`2 predicate)
at SimpleTest.Program.Main(String[] args) in /home/kris/code/minio-dotnet/SimpleTest/Program.cs:line 47
Server side trace:
--------------------------
โ minio git:(debugnet) minio server ~/ex
Drive Capacity: 6.9 GiB Free, 221 GiB Total
Endpoint: http://192.168.1.157:9000 http://172.17.0.1:9000 http://172.18.0.1:9000 http://172.19.0.1:9000 http://172.20.0.1:9000 http://127.0.0.1:9000
AccessKey: minio
SecretKey: minio123
Browser Access:
http://192.168.1.157:9000 http://172.17.0.1:9000 http://172.18.0.1:9000 http://172.19.0.1:9000 http://172.20.0.1:9000 http://127.0.0.1:9000
Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://192.168.1.157:9000 minio minio123
Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
Java: https://docs.minio.io/docs/java-client-quickstart-guide
Python: https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
.NET: https://docs.minio.io/docs/dotnet-client-quickstart-guide
signed headers .... map[X-Amz-Content-Sha256:[e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855] X-Amz-Date:[20180221T205638Z] Host:[192.168.1.157]]
๊ฐ๋จํ ํ ์คํธ๋ก ์ฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น์?
https://github.com/poornas/restsharp-test - ์ด๊ฒ์ restsharp๋ฅผ ์ฌ์ฉํ์ฌ ๋ชฉ๋ก ๋ฒํท์ minio ์๋ฒ์ ํธ์ถํ๋ ๋ฒ ์ด ๋ณธ ํ๋ก์ ํธ์ ๋๋ค. ์ฌ์ฉ์ ์ ์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋ช ๋ถ์ผ์น๋ก ์ธํด ์คํจํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์์ฒญ์ด restsharp์ ์ ๋ฌ๋๋ฉด ์๋ฒ์ ์ ๋ฌ๋๊ธฐ ์ ์ ํฌํธ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค.
๊ฐ์ฌ ํด์. ๋ณด๊ณ ์์ ํ๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์!
@alexeyzimarev ๋ฌด์์ด ์ด๊ฒ์ ์ผ์ผํฌ ์ ์๋์ง์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
@alexeyzimarev , ์์ง ์ด๊ฒ์ ์ดํด๋ณผ ๊ธฐํ๊ฐ ์์์ต๋๊น? ๊ฐ์ฌ ํด์
์ง๊ธ ํ์ธ ์ค
๋๋ ๋น์ ์ ๋ณต์ ๋ฅผ ๋ณต์ ํ๊ณ ๋๋ ์ด๊ฒ์ ๋ด ๋๋ค:
"parameters": [
...
{
"name": "Host",
"value": "play.minio.io:9000",
"type": "HttpHeader"
}
์์ฒญ์ ๋งค๊ฐ๋ณ์๋ ๊ด์ฐฎ์๋ฐ ๊ฐ์ด ์๋ฒ์ ์ ๋๋ก ์ ์ก๋์ง ์๋๋ค๋ ๋ป์ธ๊ฐ์?
@alexeyzimarev ๋ง์ต๋๋ค. ์์์ ๋ณธ ์ถ์ ์ executeAsync๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ๋๋ค. ExecuteAsync๊ฐ ํธ์ถ๋๋ฉด Restsharp๋ ์ฌ์ฉ์ ์ง์ ์ธ์ฆ์์ url:port ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ช ๊ถํ ๋ถ์ฌ ํค๋๋ฅผ ์ค์ ํ๋ Authenticate ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. ํฌํธ๋ ์๋ฒ์ ๋๋ฌํ๊ธฐ ์ ๊ณผ Authenticate() ํธ์ถ ํ์ Restsharp์ ์ํด ์ ๊ฑฐ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ํด ๊ฝค ์ด์ฌํ ์ฐจ๋จ๋์์ต๋๋ค.
์์ง ์ด๊ฒ๋ฐ์ ๋ชป๋ด์ ์ฃ์กํฉ๋๋ค. ๋งค์ฐ ์ค์ํ ๊ฒฝ์ฐ ๋๋ฒ๊น ํ๋ ๋ฐ ํ ์๊ฐ์ ํ ์ ํ ์ ์์ต๋๊น?
๋๋ ์ด๊ฒ์ ๋ํด ๋น ๋ฅด๊ฒ ์ดํด๋ณด์๋ค. ๋ด๊ฐ ๋งํ ์ ์๋ ํ, ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์ค์ ๋ก RestSharp์ ์๋ ๊ฒ์ด ์๋๋ผ ์ค์ ๋ก $#$ System.Net
HttpWebRequest
$์
๋๋ค!
RestSharp๊ฐ System.Net์ ์์ฒญ์ ์ ๋ฌํ ๋๊น์ง $#$ HttpWebRequest
$#$์ Host
์์ฑ(Uri)์๋ ์ฌ์ ํ ํฌํธ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ .SendRequest()
๊ฐ ํธ์ถ๋๋ฉด ์ฌ์ฉ๋๋ Host ํค๋๋ host ๋ฐ port๊ฐ ์๋ URI Host๋ก๋ง ์ฑ์์ง๋๋ค .
๋ค์์ ์์ ๋งํฌ์ ์๋ ๋ด ๋๋ฒ๊ฑฐ์ ์คํฌ๋ฆฐ์ท์
๋๋ค.
์ด๊ฒ์ ํฌํธ ์ฌ์ฉ์ ์กด์คํ๋ HTTP ์ฌ์ ์ ๋ช ๋ฐฑํ ์ด๊ธ๋ฉ๋๋ค.
dotnet ํ๋ ์์ํฌ์์ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ ์ ์ด ์๊ณ ์ผ๋ฐ์ ์ผ๋ก ๋ด๊ฐ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ์๋ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋๊ตฐ๊ฐ๊ฐ ํ๋ ธ๋ค๋ฉด ์ ๋ฅผ ์์ ํด ์ฃผ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ๋จ๊ณ๊ฐ CoreFX ์ ์ฅ์์์ ์ด ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๊น?
์ฌ๋ ค๋ณด์!
์๋ฃ - ๋ฒ๊ทธ๊ฐ ์๋์ง ์๋์ง ํ์ธํฉ๋๋ค.
๊ถ๊ธํด์์ - ์ต๊ทผ .NET Core์ ํ๊ท์ธ์ง ์๋ ์ฌ๋์ด ์์ต๋๊น? (2.1) ์๋๋ฉด ๋ง์ง๋ง ์์ (2.0)์ผ๋ก? ๋๋ .NET Framework์ .NET Core์ ์ฐจ์ด์ ๋๋ OS Windows์ Linux์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น? ("๋ชจ๋ฅธ๋ค"๋ ์ข์ ๋๋ต์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!)
@karelz TBH ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ง ์๊ธฐ ์ํด ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ์ต๋๋ค ๐ ์ ์๊ฒ๋ "๋ชจ๋ฅธ๋ค"๊ณ MacOS์ .NET Core 2.0์์๋ง ์๋ํ์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ .NET Framework๋ฅผ ํตํด .NET Core๋ฅผ ์ง์ํ๋๋ก ์ ๊ทธ๋ ์ด๋๋ ์ต๊ทผ(๋ช ๊ฐ์)์ ๋๋ค. @alexeyzimarev ๊ฐ ๋ ๋ง์ด ์ ์ ์์๊น์?
์ข์ต๋๋ค. ์ต์ํ .NET Framework(Windows)์์๋ ์๋ํ๊ณ .NET Core 2.0(Mac)์์๋ ์คํจํฉ๋๋ค. ์ ํํ ์์ฝ์ธ๊ฐ์?
์๋์ - ๋ด๊ฐ ์ํ ๋ค๋ฅธ ์ค๋ ๋์์ .NET Core 2.0์ ๋ชจ๋ ํ๋ซํผ์์ ์คํจํ๊ณ .NET Framework์ ๋ํด์๋ ๋ชจ๋ฆ ๋๋ค.
@karelz ๊ทธ ๊ฐ์ ์ด ์ณ์ ๊ฒ์ด๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ๋ฐฉ๊ธ ์ ์ฒด ํ๋ ์์ํฌ์์ .net ์ฝ์ด/ํ์ค์ผ๋ก ๋ณ๊ฒฝํ ๋ค์ ํ ์คํธ๊ฐ ์ค๋จ๋์์ต๋๋ค. .net ํ์ค 2.0์ผ๋ก๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ ์๋ํ๊ธฐ ๋๋ฌธ์ 1.x์์ ํ๊ท์ธ์ง ํ์คํ์ง ์์ต๋๋ค.
@niemyjski ํ์ธ ๊ฐ์ฌํฉ๋๋ค. ์ด ์์ ์์ ์ถฉ๋ถํ ์ ๋ณด์ ๋๋ค. ๋๋ ๋จ์ง ์๋ ค์ง ์ฌ์ค/๊ฒฝํ์ ์ ์ฐฐํ๊ณ ์์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๊ณ์ ๊ณต๊ฐํ๊ณ ์์ต๋๊น?
CoreFx์ ์์ ์ฌํญ์ PR์ ์์ต๋๋ค: https://github.com/dotnet/corefx/pull/28375
๋ค :)
๊ฐ์ฌ ํด์
-๋ธ๋ ์ดํฌ ๋์๋ฏธ์คํค
2018๋
3์ 22์ผ ๋ชฉ์์ผ ์คํ 3์ 57๋ถ, Caesar Chen ์๋ฆผ @github.com
์ผ๋ค:
CoreFx์ ์์ ์ฌํญ์ PR์ ์์ต๋๋ค: dotnet/corefx#28375
https://github.com/dotnet/corefx/pull/28375โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/restsharp/RestSharp/issues/1085#issuecomment-375454963 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AA-So67a2QfPq72jMHNxaSCBhDXiWXOMks5thBAygaJpZM4SOXLx
.
ํจ์ฌ ๋ ๋น ๋ฅธ HttpClient๋ก ์ ํํ ์ ์๋ ์ด์ ๊ฐ ์์ต๋๊น?
๋ ์ฝ๊ฒ ์์
ํ ์ ์์ต๋๊น? ์ด ๋ฌธ์ ๊ฐ ์์๊น์?
๊ฐ์ฌ ํด์
-๋ธ๋ ์ดํฌ ๋์๋ฏธ์คํค
2018๋
3์ 23์ผ ๊ธ์์ผ ์ค์ 7์ 14๋ถ, Blake Niemyjski [email protected]
์ผ๋ค:
๋ค :)
๊ฐ์ฌ ํด์
-๋ธ๋ ์ดํฌ ๋์๋ฏธ์คํค2018๋ 3์ 22์ผ ๋ชฉ์์ผ ์คํ 3์ 57๋ถ, Caesar Chen ์๋ฆผ @github.com
์ผ๋ค:CoreFx์ ์์ ์ฌํญ์ PR์ ์์ต๋๋ค: dotnet/corefx#28375
https://github.com/dotnet/corefx/pull/28375โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/restsharp/RestSharp/issues/1085#issuecomment-375454963 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AA-So67a2QfPq72jMHNxaSCBhDXiWXOMks5thBAygaJpZM4SOXLx
.
@niemyjski ๋น์ ์ RestSharp์ ์ค์์น๊ฐ HttpWebRequest
HttpClient
๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น?
๋ค :)
๊ฐ์ฌ ํด์
-๋ธ๋ ์ดํฌ ๋์๋ฏธ์คํค
2018๋
3์ 23์ผ ๊ธ์์ผ ์ค์ 9์ 22๋ถ, Alexey Zimarev [email protected]
์ผ๋ค:
@niemyjski https://github.com/niemyjski ๋น์ ์ ๋น์ ์ด ์ ํ ์๋ฏธ
RestSharp๋ HttpWebRequest ๋์ HttpClient๋ฅผ ์ฌ์ฉํฉ๋๊น?โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/restsharp/RestSharp/issues/1085#issuecomment-375680769 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AA-So0cbK66_Nq-MRdk0xwdb7sLPSGUoks5thQUUgaJpZM4SOXLx
.
@niemyjski ์ง๋ฌธ์ ํ๋ _๋๋_ ๋ค๋ฅธ ๊ฒ์ด์์ต๋๋ค. _yes_๋ ์ค์ ๋ก ์ ํจํ ๋ต๋ณ์ด ์๋๋๋ค. :)
RestSharp๊ฐ HttpClient
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ์๋ฏธ์ธ ๊ฒฝ์ฐ - ์ ๋ ์ด์ ์ฐฌ์ฑํ์ง๋ง ์ง๋๋ฒ์๋ RestClient์ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ผ์น์ํค๋ ๋ฐ ๋ง์ ์์
์ด ํ์ํ์ต๋๋ค.
์, ํจ์ฌ ๋ ์ ์ฐํ๊ณ ๋ ๋์ ์ฑ๋ฅ๊ณผ ๋ชจ๋ ๊ณณ์์ ์๋ํ๋ ์ต์ API๋ฅผ ์ ๊ณตํ๋ HttpClient๋ก ์ ํํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ช ๊ฐ์ง ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ ์ ์์ต๋๋ค. :)
๋ค, ์ํ๊ณ ์์ต๋๋ค๋ง ํผ์ ํ๋ ๊ฒ์ ์๋๋๋ค. ํด๋ดค๋๋ฐ ์ผ์ด ๋๋ฌด ๋ง์์ต๋๋ค. ์ฝ๋ฐฑ์ ํ์ฉํ๋ ๋น๋๊ธฐ ํธ์ถ๋ ์ ๊ฑฐํฉ๋๋ค. ContinueWith๋ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ด 2.1์ ๋ณํฉ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ก์ด ๋ฏธ๋ฆฌ ๋ณด๊ธฐ 2๋นํธ๋ฅผ ์ฐธ์กฐํ๋ nightly๋ฅผ ๋ฐํํด์ผ ํ๋ฉฐ ๋ค๋ฅธ ํจํค์ง๋ฅผ ์ค๋ ์ด๋ํ ์ ์์ต๋๊น? < 2.1 ๋ฐํ์/libs์ ๋ํด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด ์๋ฌด ์๊ฐ์ด ์์ต๋๋ค
ํ๋ฆฌ๋ฆด๋ฆฌ์ฆ๋ฅผ ์ฐธ์กฐ 2.1 ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ก ๋ณ๊ฒฝํ๋ ค๋ฉด ๋จผ์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
ํด๊ฒฐ๋์๋์? 2.1 rtm ํจํค์ง๋ nuget์ ์์ต๋๋ค.
๋ฐ๋ผ์ 2.1์ ์ฌ์ฉํด๋ณด๊ณ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋์ง ํ์ธํด์ผ ํฉ๋๊น?
@niemyjski 4์ 20์ผ์ ์ ๋๊ธ์ ๋ฐ๋ณด์ ๋๋ค. ๋๋ ์๋ฌด๋ฐ๋ ๊ฐ๋ฆฌํฌ ํ์๊ฐ ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ .NET Standard 2.0์ผ๋ก ์ปดํ์ผ๋ฉ๋๋ค. ์ด ์ค๋ฅ๋ .NET Core 2.0 ๋ฐํ์์ ๋ฒ๊ทธ๋ก ์ธํด ๋ฐ์ํ๋ฏ๋ก .NET Core 2.1๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ๋น๋ํ๋ ์ฆ์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ฉด ์๋์ ์์ํด์ผ ํฉ๋๋ค. ํผ๋์ ๋๋ ค ์ฃ์กํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๋ ค๋ณด์!