2009-06-23 6 views
0

MSBuild가 방금 TFS2008로 이동 된 프로젝트에서 작업하게하려고합니다. 해결책은 거대했기 때문에 5 개의 팀 프로젝트 A-E로 나뉘 었습니다. 각각 하나의 솔루션 만 있지만 여러 프로젝트가 있습니다. A는 먼저 건설되는 B-E에 대한 관심입니다. 우리는 모든 디버그와 릴리즈 버전을 모두 만들어야하는데 괜찮습니다.하지만 A를 릴리즈 모드에서 컴파일 할 때 B-E의 디버그 버전을 사용합니다. A에있는 프로젝트의 proj 파일을 살펴보면 어셈블리 참조가 B-E에있는 라이브러리의 디버그 버전을 가리 키도록 설정되었습니다. MSBuild proj 파일을 사용하여 B-E에서 프로젝트의 릴리스 버전을 참조하는 방법이 있습니까? 지금까지 MSBuild proj 파일에
<PropertyGroup>
<AssemblySearchPaths>
$(Configuration)
$(AssemblySearchPaths)
</AssemblySearchPaths>
</PropertyGroup>
을 추가하려고 시도했지만 아무런 차이가 없습니다. 어떤 제안?MSBuild에서 올바른 어셈블리를 참조하는 방법은 무엇입니까?

답변

3

이 (이것은 다른 대답 당신이 모든 작업을 수행하려는 경우 .prof 파일 내)

다양한 구성에 대한 각 속성 그룹에 참조 경로를 설정할 수 있습니다.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <ReferencePath>c:\blah\blah\Path\To\Debug\</ReferencePath> 
</PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <ReferencePath>c:\blah\blah\Path\To\Release\</ReferencePath> </PropertyGroup>

.proj 파일에 이미 조건부 속성 그룹이 있어야하므로 참조 경로 비트를 추가하면됩니다. 세미콜론으로 구분하여 여러 개의 경로를 가질 수 있습니다.

2

나는 당신이 할 수 있다고 생각 :

<PropertyGroup> 
    <SomeReferencePath>..\Your\Other\Build\Path\</LibraryReference> 
</PropertyGroup>
그런 다음 대상이 포함 : 해당 참조 경로에보고하도록 컴파일러에 지시합니다
Properties="ReferencePath=$(SomeReferencePath)"
그것이 어셈블리를 참조하는 것 해결하기.

생각 = :)

[편집 :이 모든 모든 하위 프로젝트를 기반으로 새로운 msbuild를 스크립트 내 갈 것입니다.]

+0

아. 잠깐, 당신은 .proj 파일에 대해 이야기하고 있습니다. 죄송합니다. 내가 할 일은 모든 프로젝트를 빌드하는 새로운 msbuild 스크립트를 만드는 것입니다. 원하는 각 프로젝트에 대한 대상을 작성하여이 작업을 수행 할 수 있습니다. 그런 다음 각 프로젝트의 각 대상에 대한 참조 경로를 설정합니다. 나는이 답변을 넣은 것처럼. (나는 당신이 선호하는 또 다른 가능한 방법에 대한 또 다른 대답을 올렸습니다.) –

+0

@Barn : 이봐, 당신의 의견을 삭제했습니다. 이제 나는 나 자신과 대화하는 것처럼 느껴진다. = :) 흠 ... 아마도 ... 나 ... 미친 ... 아니 ... –

관련 문제