성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>ssindex.cmd 실행 시 '...[tfs_collection_url]...' not found in srcsrv.ini 오류 발생</h1> <p> 소스 서버가 뭔지에 대해서는 예전에 설명해 드린 적이 있지요? ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > TFS Team Build + Source Server = 소스 코드 디버깅 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/600'>http://www.sysnet.pe.kr/2/0/600</a> </pre> <br /> 그런데 ssindex.cmd를 실행하는 과정에서 다음과 같은 오류가 발생하는 경우가 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > D:\Sources><span style='color: blue; font-weight: bold'>perl -w -x "%ProgramFiles(x86)%\Debugging Tools for Windows (x86)\srcsrv\ssindex.cmd" -SYSTEM=TFS -SYMBOLS="d:\sources\bin\release" -SOURCE=d:\sources</span> -------------------------------------------------------------------------------- ssindex.cmd [STATUS] : Server ini file: C:\Program Files (x86)\Debugging Tools for Windows (x86)\srcsrv\srcsrv.ini ssindex.cmd [STATUS] : Source root : d:\sources" ssindex.cmd [STATUS] : Symbols root : d:\sources\bin\Release ssindex.cmd [STATUS] : Control system : TFS ssindex.cmd [STATUS] : TFS program name: tf.exe ssindex.cmd [STATUS] : TFS Label : <N/A> ssindex.cmd [STATUS] : Old path root : <N/A> ssindex.cmd [STATUS] : New path root : <N/A> -------------------------------------------------------------------------------- ssindex.cmd [STATUS] : Running... this will take some time... ssindex.cmd [STATUS] : http://localhost:8083/tfs/defaultcollection not found in srcsrv.ini. Skipping all files in database. </pre> <br /> 이 오류가 발생하는 원인은, srcsrv.ini에 기재한 "MYSERVER" 항목의 값과 ssindex.cmd 내부에서 호출하는 tfs.pm의 반환값이 다르기 때문입니다. 예를 들어, srcsrv.ini에는 다음과 같이 기재하고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > [variables] MYSERVER=https://guesttfs3.testhvpc.com:8084 </pre> <br /> tfs.pm은 내부적으로 다시 "tf.exe workfold"의 반환값으로 TFS 서버의 주소를 알아내는데,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > D:\Sources>tf.exe workfold =============================================================================== Workspace : TESTPC (TestUser) Collection: https://localhost:8080/tfs/defaultcollection $/TestProgram: D:\Sources </pre> <br /> 보시는 바와 같이 "Collection"의 값과 "MYSERVER" 항목의 값이 다릅니다.<br /> <br /> 이런 경우, 문제 해결책은 MYSERVER의 값을 바꾸거나 "tf.exe workfold"가 MYSERVER에 기재한 값과 동일한 내용을 반환하도록 수정해야 합니다. 가장 편한 것은 MYSERVER의 값을 바꾸면 좋겠으나, 위와 같은 경우에는 "Collection:"의 반환값 주소가 "localhost"이기 때문에 소스 서버 접근을 외부에서 할 수 없다는 것이 되므로 "tf.exe workfold"의 결과값을 바꾸는 쪽을 선택해야 합니다.<br /> <br /> "tf workfold"는 실행시 그 값을 다음의 폴더에 있는 파일로부터 가져와서 출력하는 역할만 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > %LOCALAPPDATA%\Microsoft\Team Foundation\5.0\Cache </pre> <br /> 위의 폴더에 있는 적절한 파일을 찾아 바꾸면 좋겠지만, 사실 이 폴더는 캐시의 역할밖에 없어서 지우면 바꾸기 이전의 값으로 새롭게 생성됩니다. 따라서, 그 기반의 값을 고쳐야 하는데요. 그 값은 다음의 레지스트리 값에 기반합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\TeamFoundation\Instances\localhost Uri == http://localhost:8083/tfs HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\TeamFoundation\Instances\localhost\DefaultCollection Uri == http://localhost:8083/tfs/defaultcollection </pre> <br /> 하지만, 이 값을 직접 고치기보다는 아예 새롭게 TFS 서버를 등록하는 식으로 해결하는 것이 더 깔끔합니다. 가령, Visual Studio를 실행하고 "Team Explorer"에서 다음과 같이 srcsrv.ini에 기재한 MYSERVER의 값과 동일한 주소로 연결하는 항목을 포함하는 것입니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='tfs_public_1.png' src='/SysWebRes/bbs/tfs_public_1.png' /><br /> <br /> 등록 후, "tf workfold" 명령어로 출력 결과를 확인해 보면 잘 바뀌었는지 알 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > D:\Sources><span style='color: blue; font-weight: bold'>tf.exe workfold</span> =============================================================================== Workspace : TESTPC (TestUser) Collection: <span style='color: blue; font-weight: bold'>https://guesttfs3.testhvpc.com:8084/tfs/defaultcollection</span> $/TestProgram: D:\Sources </pre> <br /> 이후 다시 ssindex.cmd를 실행하면 정상적으로 소스 서버가 인덱싱되는 것을 확인할 수 있습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 한 가지 주의할 것은, "MYSERVER"의 항목과 "tf.exe workfold"가 출력한 Collection의 경로가 일치해야 합니다. 예를 들어, 다음과 같은 상황에서도 정상적으로 동작하지 않습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > MYSERVER == http://yoururl:8080/tfs/defaultcollection/ Collection: http://yoururl:8080/tfs/defaultcollection </pre> <br /> MYSERVER의 끝에 '/' 문자가 있기 때문에 2개의 항목이 다르다고 판단하기 때문입니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 팁을 하나 말씀드리면, ssindex.cmd의 인자에 /debug 옵션을 줄 수가 있습니다. 그럼, 다음과 같이 실행 여부를 좀 더 확실하게 알 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > D:\Sources>perl -w -x "%ProgramFiles(x86)%\srcsrv\ssindex.cmd"<span style='color: blue; font-weight: bold'> /debug </span>-SYSTEM=TFS -SYMBOLS="d:\sources\bin\release" -SOURCE=d:\sources -------------------------------------------------------------------------------- ssindex.cmd [STATUS] : Server ini file: C:\Program Files (x86)\Debugging Tools for Windows (x86)\srcsrv\srcsrv.ini ssindex.cmd [STATUS] : Source root : D:\Sources\ ssindex.cmd [STATUS] : Symbols root : D:\Sources\\bin\Release ssindex.cmd [STATUS] : Control system : TFS ssindex.cmd [STATUS] : TFS program name: tf.exe ssindex.cmd [STATUS] : TFS Label : <N/A> ssindex.cmd [STATUS] : Old path root : <N/A> ssindex.cmd [STATUS] : New path root : <N/A> -------------------------------------------------------------------------------- ssindex.cmd [STATUS] : Running... this will take some time... <span style='color: blue; font-weight: bold'>ssindex.cmd [INFO ] : ... wrote C:\Users\TestUser\AppData\Local\Temp\index195FB.stream to D:\Sources\TestProgram.pdb ... ...[생략]... ssindex.cmd [INFO ] : ... wrote C:\Users\TestUser\AppData\Local\Temp\index3059.stream to D:\Sources\bin\Release\TestLib.pdb ...</span> </pre> <br /> <hr style='width: 50%' /><br /> <br /> ssindex.cmd에 인자를 전달하는 경우 주의해야 할 사항이 하나 있습니다. -SYMBOLS 인자는 문제가 없는데, -SOURCE 인자에는 큰따옴표(")로 둘러싸면 안됩니다. 예를 들어 다음과 같이 지정하면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > perl -w -x "%ProgramFiles(x86)%\Debugging Tools for Windows (x86)\srcsrv\ssindex.cmd" -SYSTEM=TFS -SYMBOLS="d:\sources\bin\release"<span style='color: blue; font-weight: bold'> -SOURCE="d:\sources"</span> </pre> <br /> ssindex.cmd 내부의 -SOURCE 구문 해석에 오류가 있어서 다음과 같이 마지막의 큰따옴표(") 문자를 경로에 포함하게 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > D:\Sources>perl -w -x "%ProgramFiles(x86)%\Debugging Tools for Windows (x86)\srcsrv\ssindex.cmd" /debug -SYSTEM=TFS -SYMBOLS=d:\sources\bin\release -SOURCE="d:\sources" -------------------------------------------------------------------------------- ssindex.cmd [STATUS] : Server ini file: C:\Program Files (x86)\Debugging Tools for Windows (x86)\srcsrv\srcsrv.ini ssindex.cmd [STATUS] : Source root : <span style='color: blue; font-weight: bold'>D:\Sources"</span> ssindex.cmd [STATUS] : Symbols root : D:\Sources\\bin\Release ssindex.cmd [STATUS] : Control system : TFS ssindex.cmd [STATUS] : TFS program name: tf.exe ssindex.cmd [STATUS] : TFS Label : <N/A> ssindex.cmd [STATUS] : Old path root : <N/A> ssindex.cmd [STATUS] : New path root : <N/A> -------------------------------------------------------------------------------- ssindex.cmd [STATUS] : Running... this will take some time... ssindex.cmd [INFO ] : ... indexing D:\Sources\bin\Release\TestProgram.pdb <span style='color: blue; font-weight: bold'>ssindex.cmd [INFO ] : ... zero source files found ...</span> ...[생략]... ssindex.cmd [INFO ] : ... indexing D:\Sources\bin\Release\TestLib.pdb <span style='color: blue; font-weight: bold'>ssindex.cmd [INFO ] : ... zero source files found ...</span> </pre> <br /> 결과적으로 "zero source files found" 문제를 발생하게 됩니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
8061
(왼쪽의 숫자를 입력해야 합니다.)