2010-07-14 5 views
0

Visual Studio 2010 TFS로 외부 라이브러리를 사용하여 프로젝트를 빌드하는 데 문제가 있습니다.Team Foundation Server 2010 : 외부 라이브러리로 빌드

솔루션의 루트에서 모든 공유 라이브러리가있는 "libs"폴더가 있으며 여기에서 라이브러리를 참조합니다. ,

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (1360): Could not resolve this reference. Could not locate the assembly "Spring.Data". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

내가 릴리스 디버그에서 솔루션 구성을 변경하려고 : 나는 프로젝트를 짓고 있어요 때

는 일부 라이브러리가 고려 나는 다음과 같은 오류 메시지가 표시되지 않습니다 다른 폴더에서 공유 라이브러리를 찾으려면 ... 그걸 관리 할 수 ​​없었습니다.

빌드에서이 라이브러리를 어떻게 사용할 수 있습니까?

감사 데이비드 첫 번째 단계는 당신이 제대로 올바른 상대 경로를 사용하여 DLL을 참조하고 있는지 확인하는 것입니다

답변

2

. 프로젝트 파일의 XML을 열고 절대 경로가 아닌 상대 경로인지 확인하십시오 ("...."대 "C : \ Code \").

경로가 모두 올바른 경우 다음 단계는 파일이 빌드 서버의 작업 영역으로 풀다운되는지 확인하는 것입니다. 서버의 빌드 폴더를 검사하여 확인할 수 있습니다. 그곳에 없으면 빌드를 시작할 때 얻을 폴더를 정의하는 작업 공간 매핑에 문제가있을 수 있습니다.

그 중 가장 일반적인 문제입니다. 그것들이 맞다면 더 많은 진단 정보가 필요합니다.

+0

절대 경로는 매번 당신을 죽일 것입니다. – Robaticus

+0

이 점을 확인해 보겠습니다. 하지만 처음에는 bin/debug에서 오는 라이브러리 버전을 사용하고있는 것처럼 보입니다. – davandries

+0

libs 폴더에있는 DLL 대신 다른 프로젝트의 bin/Debug 폴더에서 dll을 참조하고 있습니까? 그렇다면 문제가됩니다. 컴파일 출력 폴더가 빌드 서버에서 다르므로 프로젝트가 존재하지 않거나 비어있는 폴더를 가리키고 있습니다. –

1

힌트 경로를 확인하십시오.

  • 는 개발 파일 서버에 회사의 다른 팀에서 외부 라이브러리 또는 컴파일 된 물건을 복사 : 때때로 오래된 참조는 외부 라이브러리를 참조 할 때

    어쩌면 내가 좋은 방법을 제공 할 수 있습니다 ... 거기에있다 형식 :
  • 모든 솔루션 파일에 대한 복사 스크립트를 만들고 솔루션 항목으로 추가하십시오. 해당 솔루션 파일이 올바르게 빌드되도록 dev 서버에서 원하는 모든 외부 lib에 대해 여러 xcopy 명령을 추가하십시오.
  • subst 가상 드라이브 (dos 명령 subst로)를 작성하고이를 작업 공간 (예 : R 드라이브)에 맵핑하고 Windows 시작시이 스크립트를 활성화하여 항상 사용 가능하게하는 스크립트를 작성하십시오. 이 스크립트는 개발자 전용이며 개발자 작업 영역에 매핑됩니다.
  • R 드라이브 매핑이있는 모든 파일 참조를 만듭니다. 예를 들면 다음과 같습니다. R : \ NiceLib \ 1.0 \ nicelib.core.dll

이렇게하면 자신의 출처와 외부 당사자 또는 회사의 다른 팀의 모든 컴파일 된 자료만으로 TFS를 깨끗하게 처리 할 수 ​​있습니다. dev 파일 서버에 저장됩니다.

+0

이 방법을 사용하여 참조 된 dll의 버전을 어떻게 처리합니까? 최신 버전의 외부 어셈블리를 사용해 보거나 이전 버전의 앱에 패치를 적용하려면 어떻게해야합니까? –

+0

힌트 경로를 확인했습니다. 그들은 잘 보입니다 – davandries

+0

@ 존 : 각 외부 lib는 버전 nr이 있어야합니다; 일단 파일 서버에 저장되면 덮어 쓰기를 위해 보안됩니다. 내 예제에서 lib의 새로운 버전을 시험해 볼 때 dev 파일 서버 R : \ NiceLib \ 1.0.1 \ nicelib.core.dll에 새로운 하위 폴더를 만든다. –

0

Visual Studio 2010 TFS를 사용하여 비슷한 문제가 발생했습니다. 계단 밑에서 머리를 두드리는 날이 저를 위해 일했습니다.

  1. 모든 외부 DLL을 별도의 폴더에 (TFS가 오류를 던지고있는 DLL을)에 복사합니다.

  2. 소스 제어에서 폴더를 확인하십시오 (dll도 폴더와 함께 체크인되었는지 확인하십시오. 그렇지 않은 경우 수동으로 체크인하십시오.).

  3. 프로젝트에서 오류가 발생하는 DLL을 삭제하고 생성 된 별도의 폴더에서 다시 참조하십시오.
  4. 응용 프로그램을 빌드하고 프로젝트를 체크인하십시오.
  5. 이제 빌드 정의를 편집하십시오. 작업 공간 탭으로 이동하십시오. 별도로 추가되는 참조 폴더에 작업 영역을 추가하십시오.
  6. 소스 제어 열에서 체크 인한 별도 폴더의 위치를 ​​선택하십시오. 빌드 에서 에이전트 열은 별도의 참조 폴더가 만들어진 구조를 염두에두고 경로를 지정하십시오. 저장하고 실행하십시오.

설명 : 작업 공간의 에이전트 빌드 열 아래에 지정된 경로는 외부 참조 폴더를 빌드 서버로 복사합니다. 빌드 서버는 응용 프로그램을 빌드 할 때이 폴더가 필요합니다. 참고 : 빈 위치를 외부 DLL에 대한 참조로 제공하지 마십시오. 솔루션을 정리하고 참조가 사라지면 저장소가 삭제됩니다.

관련 문제