.NET 응용 프로그램에서 참조를 처리하는 가장 좋은 방법은 무엇입니까


9

최근 직장에서 우리는 프로젝트를 태그 / 브랜치하는 문제가 발생했으며 이전 폴더 구조를 가리키는 dll / 프로젝트 참조로 인해 컴파일 문제가 발생했습니다.

각 프로젝트마다 '외부 빈'폴더를 만들고 참조 된 dll을이 폴더에 복사했습니다. 이것이 최선의 방법입니까, 아니면 이것을 처리하기위한 특정 산업 표준이 있습니까?

답변:


21

나는 nuget 이 종속성을 처리하는 가장 좋은 방법 이라고 말합니다 .

nuget은 버전을 관리하고 로컬 nuget 서버 에서 종속성을 자동으로 다운로드 할 수 있습니다 .

로컬 서버를 생성 / 구성하는 것은 매우 쉽습니다. 비어있는 새 ASP.NET 프로젝트를 만들고 nuget-servernuget 패키지를 설치하십시오 (nuget; 사용).

또한 모든 종속성을 체크인하거나 TFS를 사용하여 버전을 관리 할 필요가 없습니다.


1
나는 대부분의 회사들이 이것을 잘 활용하지 못한다는 것을 안다. 사실, 나는 이것의 이점을 얻도록 빌드 서버를 올바르게 구성하지 않았으므로 어디에서나보고 싶은 것에 +1합니다.
deltree

패키지를 버전이없는 상태로 유지하고 종속성을 자동으로 다운로드하기 위해 nuget을 스크립팅 (또는 무언가) 할 수 없는지에 대한 질문을하려고했습니다. 감사!
Mormegil

5

마이크로 소프트는 참조를 처리하는 가장 좋은 방법은 하나의 거대한 솔루션으로 프로젝트를 구축하는 것이라고 말합니다. 그렇습니다, 그들은 정말로 그것을 의미합니다.

패턴 및 실무 팀은 TFS와 관련하여 모범 사례를 결합했지만 일반 빌드에 적용됩니다. 대부분의 사람들이 빌드를 관리하고 아티팩트를 공통 디렉토리에 복사하여 빌드를 관리하는 방법과 매우 유사한 파티션 된 접근 방식 인 "1 큰 솔루션"의 세 가지 유형의 솔루션 설정이 있습니다. 서버 전체의 '포함'또는 '라이브러리'경로를 참조해야 함) 및보다 복잡한 버전의 파티션 된 다중 솔루션 설정.

그들은 말한다

In general you should:

    Use a single solution strategy unless the resulting solution is too large to load into Visual Studio.
    Use multiple solutions to create specific views on sub-systems of your application.
    Use multiple solutions to reduce the time it takes to load a solution and to reduce build time for developers.

TFS의 경우 서브 버전의 외부와 유사한 작업 영역 매핑에 의존하기보다는 프로젝트 내부의 외부 프로젝트를 분기하는 것이 좋습니다. 개인적으로 나는 그들의 조언이 모범 사례는 아니라고 생각하지만 참조를 사용할 때 얻을 수있는 빌드 문제를 최소화하려고한다고 생각합니다.

.NET 빌드에는 필요한 것만 빌드하고 모든 것을 수행하는 야간 빌드를 수행하여 시스템을 단축하려고 시도하는 모든 문제가 있었으며 모든 새 어셈블리를 디렉토리에 복사하는 것이 모든 사람, 특히 테스터와 동기화하는 가장 좋은 방법이었습니다. 이것은 실제로 .NET 응용 프로그램에만 적용되며 C ++ 구성 요소는 버전 화 된 어셈블리 또는 구성 요소 호출에 문제를 일으킬 수있는 유사한 측면이 없기 때문에 여전히 작동하는 경향이 있습니다. 이 접근법은 잘 작동하지만 부분 빌드가 정상이라고 가정 할 수는 없으며 전체를 피하고 재 구축이 가장 안전합니다.


이것은 여러 프로젝트 (API DLL, 응용 프로그램 프로젝트)를 포함하는 하나의 솔루션입니다.
Snoop

1

솔루션의 구조와 버전 제어 소프트웨어 기능에 따라 다릅니다. 이전에는 타사 참조 라이브러리에 대한 문서 및 폴더를 보유한 솔루션에 빌드되지 않은 프로젝트를 보관했습니다. 솔루션의 일부이므로 이러한 파일의 경로는 상대 경로를 사용하여 참조 할 수 있습니다. TFS 2010으로 이동 한 후이 프로젝트를 제거하고 팀 프로젝트의 해당 솔루션 폴더에 "지원"디렉토리를 주요 지점과 병렬로 추가했습니다. 두 경우 모두 라이브러리의 소스 제어 버전은 개발자가 시스템을 구성한 방법에 관계없이 동일한 위치에있게됩니다.


0

버전 제어에 서브 버전을 사용하는 경우이 목적으로 "외부"속성 을 사용할 수 있습니다 . 이를 통해 공유 DLL의 로컬 복사본을 현재 프로젝트 근처의 상대 경로에 유지할 수 있습니다. 따라서 프로젝트의 기본 디렉토리를 다른 폴더로 변경할 때도 변경되지 않는 상대 파일 경로로 해당 DLL을 쉽게 참조 할 수 있습니다. 외부를 사용하면 포함 할 특정 버전 또는 개정판을 정의 할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.