-
Notifications
You must be signed in to change notification settings - Fork 10
/
0063.txt
228 lines (228 loc) · 9.55 KB
/
0063.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
예 안녕하세요 포프입니다
오늘은 누겟(NuGet)..
누겟? 너겟? 너겟은 아니겠지?
누겟(NuGet)을 쓰라는 말씀을 드릴려고 비디오를
열었어요? 시작했어요? 시작했어요 녹화하는 거에요
누겟(NuGet)이 뭐냐면
비주얼 스튜디오에서 지원하는 거에요
비주얼 스튜디오 자체 상품은 아닌 것 같고
일단 스펠링은 NuGet에요
뭐 너겟은 아니겠지 설마
이게 누겟이라고 생각을 하고
개념은 뭐냐면
가끔 C..
뭐 C뿐만이 아니라
C#도 그렇고
뭐 C++도 그렇고
외부 라이브러리 갖다 쓸 때 있잖아요
가장 좋은 예 하나 들어드리면,
Boost 라이브러리 같은 거
아님 뭐 Json.NET 이런 거
그런 거를 할 때 보통은 거기 source depot 가 갖고
source depot?
Google Code나
뭐 GitHub 이런 데 가서
다운로드 받으셔 갖고
내 프로젝트 디렉토리에 넣어 놓고
그리고 그거를 전부 다 소스 컨트롤
(source control)에 집어넣잖아요
뭐 Perforce면 Perforce고
SVN이면 SVN이고
그리고 이제
그 라이브러리를 고쳐 쓰는 분도 있는데
대부분은 안 고쳐 쓰고 사실은
Boost 고쳐 쓰는 분은 상당히 적죠
근데 이제 그거를 이제 나중에
Boost가 업그레이드 됐다 그럼 또
Boost 또 다운 받아 갖고
그 디렉토리 날리고 다시 집어넣은 다음에
다시 소스 컨트롤에 집어 넣고
이런 일을 해요
근데 사실 어떤 의미에서는
Boost를 제가 소스 컨트롤할 이유는 없죠
그게 뭐 diff를 나중에 볼 일이 있는 것도 사실은 아니고
보고 싶으면 걔네 depot 가서 보면 되는 거고
근데 이제 뭐
당장 편하게 코드를 한 군데 넣어 놓자는
의미에서 소스 컨트롤하는 건데
NuGet이라는 개념은 뭐냐면
한마디로 웹에 있는 라이브러리 갤러리에요
근데 비주얼 스튜디오 자체에 integration이 돼 갖고
비주얼 스튜디오에 가서 이제 그냥
아 나는 Boost를 이 프로젝트에 쓸 거니까 내놔라
그러면 이제 그걸 검색하면은
거기서 곧바로 다운받아 갖고,
레퍼런스 이렇게 해주는 거 있죠
뭐
include directory라든가
library directory
그것까지 다 설정을 해 줘요
그러면은 실제 프로그래머가 할 일은 그냥
솔루션 창 있잖아요, 솔루션 익스플로러
솔루션 탐색기?
몰라
한국말론 뭐라 그러는지 모르겠어요
그 솔루션 익스플로러에서 그렇게 자기가
쓰고 싶은 외부 라이브러리를 고르는 것만으로
dependency 설정 다 되고,
다운 다 받아 주고
그럼 그 상황에서
그냥 저는 코드만 짜면 되는 거에요
Boost가 이미 설치 됐다는 개념으로
이미 C#이나 .NET 계열 언어에서는
굉장히 오래 전부터 지원했다고 들었어요
제가 쓰기 시작한 거는 굉장히 최근이에요
비주얼 스튜디오 2013년 버전에서 제가 쓰기 시작했고
2011년도 있었던 것 같아요
제가 한 번 쓴 것 같은데 기억은 잘 안 나고
지금 2013년을 주로 쓰고 있기 때문에
그래서
만약에 이제
Boost 예를 들어 드렸으니까..
아!
이 얘기부터 해야겠구나
그러면 그렇게 다운받아진 라이브러리가 있잖아요
external library가
이걸 이제 패키지라고 해 보죠
NuGet 언어에서는 패키지라고 그러는 것 같아요
이 패키지 다운받은 걸 어떻게 하냐
결국 다운받은 것도 소스 컨트롤에 넣어 놔야
사람들이 그냥 sync해서 쓸 거 아니냐
이 얘기를 하시는데
굳이 그럴 필요가 없다고 말씀을 드렸죠
괜히 소스 depot 용량 낭비하는 거고
그리고 요즘같이 Mercurial이나
기술 점점 많이 쓰는 추세에서는
아무래도 repo 사이즈는 작으면
작을수록 좋은 거기 때문에
괜히 그게 크기를 너무 크게 만드는
그런 단점이 있거든요
그래서
그거를 안 넣어도 되는 방법이 있어요
물론 넣으시려면 넣어도 되는데
안 넣어도 되는 방법이 있어요
그래서 어떤 거냐면은
솔루션에서 NuGet 패키지를 받아 두고
그러면 이제 솔루션에 오른쪽 버튼을
누르면은 그런 게 있어요
그 NuGet 다운로드를 활성화시키기라 그러나?
뭐.. 무슨 메뉴가 비슷한 게 있을 거에요
그 NuGet 패키지 리커버리라 그러나?
아니면 뭐..
그런 옵션이 있어요
그게 뭐냐면
그 옵션을 실행을 해 주면
enable을 해 줘야 돼요
안 해 주면은 그냥 패키지는 그냥
바이너리로 들어가 있는 거고
그걸 enable 해 주면은
자체적으로 그냥 무슨 조그만 텍스트 파일 하나 만들어요
("packages.config" 파일, 비주얼 스튜디오 2017 기준
NuGet 패키지 관리자에서 패키지 설치 시 자동 생성 )
이 프로젝트에서 쓰는 패키지 파일은
이거 이거 이거다 이런 식으로
그리고
그 프로그램을 빌드할 때마다
비주얼 스튜디오에서 그 목록을 봐서
하드에 현재 없는 그런 패키지들을
다운받아 줘요 빌드하기 전에
그러니까
그 소스 컨트롤에는 그 packages 폴더는 넣지 말고
그냥 그 (아까 말한) description 파일만 넣어 주면은
어느 컴퓨터에서 sync를 하든 간에
그 소스 코드를 다운받든 간에
처음 빌드할 때 NuGet 갤러리 뒤져 갖고
현존하지 않는 패키지 다운받아서
설정 다 해 주고 빌드가 되기 때문에
그런 dependency를 전부 다 해결할 수가 있죠
그래서 이거를 뭐..
정리를 하는 차원에서,
어떻게 쓰느냐를 대충 설명을 드리면
일단 뭐
가장 좋은 예는 Boost일 것 같으니까
많이들 Boost 쓰시니까 C++에서
참고로 저는 Boost 안 써요
너무 싫어요 Boost 사실은
Boost를 쓴다는 가정을 하면은 이제
솔루션 파일을 생성하시거나 여시고
이제 거기서 프로젝트 파일에 오른쪽 버튼을 클릭해서
NuGet 패키지 받기라고 있어요
그 NuGet 패키지 받기를 딱 고르시면은
그 창 안에 이제 NuGet 갤러리를
검색할 수 있는 그런 창이 나와요
거기다 Boost를 치면은 목록 중에 Boost가 나올 거에요
그럼 그 Boost에다 install 버튼 눌러 주시면
Boost를 다운받고 설치를 다 해 줘요
그럼 그 다음에는
그 솔루션 파일에 오른쪽 버튼 눌러 주고 솔루션 창에서
눌러 주고 그러면 거기서
아까 말씀드렸던
그 뭐 enable NuGet package라든가
뭐 enable NuGet package download?
뭐 이런 메뉴가 있거든요
그걸 해 주시면은
뭐 Yes, No 물으면 Yes 하시면 돼요
그러면 그게 끝이에요
그러면
매번 코드를 빌드할 때마다
그 output 창에 그런 게 나올 거에요
NuGet 패키지를 다운받아야 되는지 확인한다고
그거는 시간 별로 안 걸려요
어차피 패키지 파일..
그 텍스트 파일 한 번 보고
내가 설치한 패키지 중에 그 패키지가
있는지 보는 게 전부이기 때문에
그래서 그렇게 되고
빌드 다 되고 실행도 될 거에요
그게 제대로 작동하는지 확인하고 싶으시면은
그 소스..
아니 그 솔루션 폴더에서
윈도우 탐색기로 가셔야 돼요
거기서 솔루션 폴더 가셔 갖고
packages 폴더 지워 보시고 한번 다시 빌드해 보세요
(또는, 솔루션 탐색기-솔루션 우클릭-NuGet 패키지 복원)
그럼 패키지 다시 다운받아 갖고
다 설치되면은 제대로 되는 거에요
그러면 그 이외에는
packages 폴더는 집어넣을 필요는 없고
다른 건 다 집어넣으시고
그리고 nuget 폴더도 생기거든요 그 안에
그 안에 어떤..
nuget 폴더가 생기는 건지
아니면 다른 게 생기는 건지 모르겠는데
nuget.exe 파일이 어딘가 들어가요
그거는 반드시 넣어 줘야 돼요
그거를 이용해서 recovery 하기 때문에
그거는 용량이 그렇게 크지 않기 때문에
크게 문제는 안 되고
그래서 뭐 여태까지 소스..
external에서 받았던 거 다 집어넣고
라이브러리 집어넣고 하셨던 분들은
그럴 필요 없고요
nuget.exe만 넣고 옵션만 켜 주시면은 돼요
큰 대규모 회사? 한 군데서 모여서 일하는 회사에서는
크게 소용이 있을지는 모르겠어요
어차피 내부 서버 돌리고 보통
인트라넷이 빠르기 때문에 문제가 없는데
저는 가면 갈수록 사람들이 리모트 워크가
늘 거라고 생각을 하고 재택근무 하는 거
그리고 심지어는 조그만 팀들이나 인디
같은 데들은 그리고 창업하는 사람들은
집에서도 일하고 그냥 노트북 들고
다니면서도 일하고 많이 하시잖아요
그러면 아무래도 git이나 Mercurial 기반을 많이 쓰시고
인터넷하고 그런 거 다 싱크해야 되는데
그 용량도 만만치가 않고
그러신 분들 용으로는 이게 굉장히 좋은 솔루션 같고요
그뿐만 아니라 이제 뭐 GitHub라든가 Bitbucket 등의
그런 웹 호스팅 쓰시는 분들 소스 컨트롤 호스팅으로
그분들도 분명히 소스 컨트롤 호스팅하는 데에
용량 제한이 있기 때문에
그런 거를 생각해서도 이게 좋은 방법 같고요
그래서 혹시 모르셨던 분들
저도 잘 몰랐기 때문에 그 전에
NuGet 쓰시라고 말씀을 드렸고요
뭐 오늘은 그 정도로
뭔가 바쁘게 말을 다 한 것 같아요
예 그러니까 요 정도로 끊고!
예 포프였습니다