2008-10-07 9 views
5

Visual Studio에서 프로젝트를 언로드하면 참조하는 모든 프로젝트가 언로드 된 프로젝트를 참조 할 때 경고 삼각형이 표시됩니다. 내가 영리한 것들을 (프로젝트의 추가/제거를 감지하고 파일/프로젝트 의존성으로부터 모든 참조를 변환하는) 매크로를 작성했지만, 훨씬 더 간단한 것을 놓치지 않는다고 나는 믿을 수 없다. 참조를 수동으로 변경해야하는 경우 (그리고 개인 솔루션/공유 프로젝트 팀 개발 패러다임을 깨뜨리는 경우) 언로드 기능을 사용하면 어떻게 될까요?Visual Studio에서 프로젝트를 언로드 할 때 참조에 대해 무엇을합니까?

(이 질문은 Visual Studio에서 큰 솔루션을 구조화에 대한 this question에 대한 답변과 관련이 -. 어떤 대답이 성능 향상을 위해 사용되지 않는 프로젝트를 '언로드'프로젝트의 많은 솔루션을 가지고 있지만, 언급 한) 내 프로젝트의

+0

을! 나는 매크로 나 addin을 찾아서 그런 식으로하고 싶었지만 할 시간을 허비하지 않았다. 인터넷에서 아무 것도 찾지 못했습니다. 어떤 기회 (충분히 재사용 가능하다면) 어딘가에 게시 할 수 있습니까? –

+0

@MafuJosh, 귀하의 관심과 의견에 감사드립니다. 여기에 (보증인이없고 보통 야다 야다) https://gist.github.com/1824214 – Benjol

+0

감사합니다. 기회가 생겼을 때 이것을 들여다 보겠습니다. (밤낮으로 더 이상 일하지 않을 때) ...) 그리고 그것이 어떻게 진행되는지 알려주십시오. –

답변

1

, assemblies 폴더를 만들고 프로젝트가 다른 프로젝트가 빌드를 복사 한 설정 위치에서 자동으로 복사합니다.

참조 된 어셈블리의 프로젝트에 대한 빌드 후 :

if not exist "C:\builds\Project1" md "C:\builds\Project1\" 
copy "$(TargetDir)$(TargetName).*" "C:\builds\Project1\" 

사전 구축 참조 프로젝트 :

을 "C 존재하는 경우 : \를 구축 \ Project1의 \ "복사"c : \ builds \ Project1 *. * ""$ (ProjectDir) 어셈블리 "

프로젝트 파일은 참조 용으로 assemblies 하위 폴더를 가리키고 있으므로 소스 프로젝트가 솔루션에서 언로드되는 경우에도 개발 중 전체 프로젝트를 메모리에 저장하는 성능상의 문제없이 마지막으로 빌드 된 어셈블리가 사용됩니다.

+0

좋은데, 프로젝트를 언로드 할 때 레퍼런스 문제를 해결합니까? VS는 dll이 참조 경로에 있는지 감지 할만큼 영리하지 않은 것 같습니다. 또한 파일 참조 만있는 경우 동일한 폴더에 프로젝트가있는 이점이 없습니다. – Benjol

+0

직접 프로젝트 참조가 없어도 (어쨌든 언로드 할 때 유용하지는 않음) 같은 솔루션에서 사용하는 것이 다른 장점이 있습니다. 당신의 SCC 공급자가 그것을 기대한다면 폴더 *. –

1

파일 참조를 사용하는 경우 프로젝트를 동일한 솔루션으로 사용하면 어떤 이점이 있습니까?

당신의 app.exeutils.dll를 사용하고 당신이 동일한 솔루션에 있다면 다음 VS 종속성을 발견하고 모두 다시 컴파일합니다, utils.dll의 코드를 변경하는 경우. 솔루션에 없으면 밖으로 건너 뛰어야합니다. utils.dll을 별도로 다시 컴파일 한 다음 다시 들어가서 app.exe을 다시 컴파일하십시오.

이것은 다른 dll이 참조하는 다른 dll과 얼마나 자주 변경되는지 (내 경험상 팀 환경 공유 dll의 변경 사항에 따라)에 따라 다소 중요합니다.
VS에 100 개의 프로젝트가있는 경우 다시 컴파일해야하는지 아닌지 파악하기 위해 모두 처리하는 데 시간이 오래 걸리는 부작용이 있습니다.

+0

안녕하세요, 나는 당신이 당신의 대답도 움직이고 싶다면, 여기에 '숨겨진'질문을 옮겼습니다 : http://stackoverflow.com/questions/1490728/what-are-the-advantages-of-having-projects-in- 동일한 솔루션을 사용하는 경우 파일 -r – Benjol

1

프로젝트 언로드는 임시 작업이므로 실제 프로젝트 파일을 XML (텍스트)로 편집 할 수 있습니다. 솔루션에서 프로젝트를 완전히 제거하려면 해당 프로젝트에 대한 참조를 제거하는 "제거"메뉴 옵션을 사용해야합니다.

프로젝트 참조를 사용하는 한 가지 이점은 코드를 통해 쉽게 디버깅 할 수 있다는 것입니다. 또한 자동으로 올바른 구성 빌드를 사용하고 있는지 확인합니다 (예 : "디버그"모드에서 빌드하는 경우 어셈블리의 디버그 버전 사용).즉, 프로젝트 참조는 항상 최신 버전을 사용한다는 것을 의미합니다.

예, Visual Studio에서 빌드 종속성을 확인하려면 프로젝트 참조를 의미하는 모든 프로젝트를보고 빌드 할 수 있어야합니다.

1

솔루션 및 프로젝트 구성에 대한 MSDN 문서를 통해 방금 읽은 유레카 순간이 있습니다.

내가 알아 채지 못한 것은 다중 프로젝트 솔루션에서 솔루션 탐색기의 상황에 맞는 메뉴가 프로젝트 종속성 팝업을 제안한다는 것입니다. 여기서 프로젝트 간의 프로젝트 참조를 정의하지 않은 경우 수동으로 프로젝트 종속성을 정의 할 수 있습니다.

here (MSDN 링크를, 그래서 자기는 몇 주 후에 소멸됩니다) 참조 매크로 좋은 소리 그건