2010-08-20 4 views
4

우리 환경에는 두 개의 사내 프레임 워크와 별도의 웹 사이트가 있습니다. 개발 중에 사내 프레임 워크에 대한 참조는 프로젝트 참조로 설정되는 경향이 있습니다. 그러나 출시가 시작되면 사내 프레임 워크는 각 서버의 여러 웹 사이트 인스턴스에 사용되므로 GAC에 설치됩니다. 모든 ProjectReferences는 손으로 References로 변경되며 웹 사이트 어셈블리와 웹 사이트는 다시 컴파일되고 배포됩니다.MsBuild : 참조를 ProjectReference에서 참조로 변경

이 과정을 자동화하려고합니다. 이러한 문제를 해결하는 가장 좋은 방법은 무엇입니까? 나는 이것을 달성하기 위해 MsBuild를 배우기 시작했지만, 완전히 혼란 스럽다. 진행 방법에 대한 조언 및/또는 제안 사항이 있습니까?

답변

3

내가 아는 한, 프로젝트 참조는 GAC에 등록되어 있기 때문에 단순히 프로젝트 참조를 파일 참조로 변경하지 않아도됩니다. 참조 된 프로젝트가 강력하게 입력 된 시점에서 참조가 유효해야합니다.

명확한 설명 :

거기에 GAC 참조와 파일 참조 사이에 근본적인 차이가 없다 - 당신이 강력한 이름의 어셈블리에 대한 참조가있는 경우, 그 어셈블리가 GAC에 배치 한 후 최종 애플리케이션은 것 GAC에서 해당 어셈블리를로드하십시오.

런타임 참조 찾는 방법 어셈블리에 대한 자세한 내용은이 링크를 참조하십시오 :

을 참고하시기 바랍니다 - 나는 그것을 권장 믿는에하지 참조 어셈블리를 할 당신 GAC에 배치되기 전에 강력한 이름의 어셈블리를 참조하는 것입니다 (최종 사용자 컴퓨터에서 GAC에 어셈블리를 설치해야하는지 여부와 혼동하지 말 것).

+0

실제로 파일 참조를 원하지 않습니다. GAC 참조를 원합니다. 이는 설치 프로젝트의 작동 방식 때문입니다. GAC에만 항목을 설치합니다. –

+0

@David - "GAC 참조"란 무엇을 의미하는지 이해하지 못합니다. GAC에 설치하려는 강력한 어셈블리라는 참조를 의미합니까?이 경우 "GAC 참조"와 파일 참조간에 근본적인 차이가 없습니다. – Justin

1

프로젝트 참조를 남겨두면 MSBUILD는이 DLL을 GAC에 설치 했음에도 불구하고 대상 웹 사이트의 bin 디렉토리에 모든 프로젝트 참조를 DLL로 복사합니다. 릴리스 레벨 - 공간을 절약 할 수 있습니다.

또한 소스 분기점이 아닌 릴리스 지점에서만이 작업을 수행한다고 가정합니다. 왜냐하면 당신이 소스 컨트롤의 모든 지점에서 이것을하고 있다면, 실제로 손으로하는 것은 실제로 일회성 변경을 위해 이것을하는 가장 빠르고 가장 빠른 방법이기 때문입니다.

MSBUILD에서이 작업을 수행하려면 프로젝트 파일을 수정할 수있는 사용자 지정 작업을 만들어야합니다. 프로젝트 파일은 XML 파일이므로 MSBUILD에서 XPath를 사용자 지정 작업으로 사용할 수 있습니다. 프로젝트 파일에서 참조 된 프로젝트에 대한 태그를 찾을 수 있습니다. 대신 태그로 변경해야합니다. 프로젝트에서 태그의 기존 예제를 사용하여 표시 방법을 확인하십시오.

죄송합니다. 샘플 코드가 없습니다.이 방법을 사용하면 많은 작업이 진행될 것입니다. 고려해야 할 사항이 있으며 실현 불가능할 수도 있습니다.

관련 문제