내 부서에서 사용할 수 있도록 Visual Studio에서 템플릿 프로젝트를 구성하고 있습니다. 프로젝트는 TFS의 다른 곳에 저장된 몇 가지 공통 라이브러리를 참조해야합니다. 문제는 템플릿이 다양한 위치에서 사용될 수 있으며 모든 위치를 처리하기 위해 HintPaths를 안정적으로 설정하는 데 어려움을 겪고 있다는 것입니다.TFS 루트에서 HintPath를 설정하는 방법
템플릿 프로젝트는 빌드에서 사용하기 위해 로컬 라이브러리와 TFS에서 공통 라이브러리를 찾을 수 있어야합니다. 현재, 우리의 기존 응용 프로그램에 대한 참조는 다음과 같다 :
<Reference Include="Company.Common">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\Core Components\Libraries\Company.Common\Latest\Company.Common.dll</HintPath>
</Reference>
그러나 필요한 부모의 수는 루트가 다를 수 있습니다에 얻을 통과 할 수 있습니다.
../, ../../, ../../../ 등 50 개의 조건부 경로를 설정하는 대신 내 첫 번째 생각은 절대 참조를 설정하는 것이 었습니다. 작업 폴더는 우리 조직에서 표준화되어 있으므로 로컬에서는 항상 C : \ Projects \ Core Components \에서 참조를 찾을 수 있습니다. ...
그러나 서버 빌드에는 작동하지 않습니다. 그래서 나는 $ /로 작동하는 일종의 환경 변수가 필요하다고 생각하고 있습니다. 나는 이런 식으로 사진을 찍고있다 :
<Choose>
<When Condition="Exists('C:\Projects')">
<ItemGroup>
<Reference Include="Company.Common">
<HintPath>C:\Projects\Core Components\Libraries\Company.Common\Latest\Company.Common.dll</HintPath>
</Reference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Reference Include="Company.Common">
<HintPath>$(TFSRoot)\Core Components\Libraries\Company.Common\Latest\Company.Common.dll</HintPath>
</Reference>
</ItemGroup>
</Otherwise>
</Choose>
그러나 나는 그것을 성취 할 방법을 생각할 수 없다.
을 : 하나는 내장에-VS 다른 빌드 서버에서 환경 변수를 만든 다음 프로젝트 또는 MSBuild에서 파일을 참조하는 매크로로 사용하는 것입니다 . –
건설적인 의견을 추가했습니다. 나는 위의 모든 농구를 뛰어 넘어야한다면 분명히 접근법에 문제가 있다는 것을 덧붙이면서 위와 같이 잘못하고 있다고 덧붙였다. NuGet은 아래 명시된 바와 같이 문제의 해결책입니다. 이진 종속성은 앞으로 나아갈 길이며 코드 종속성은 피해야합니다. –