2010-12-17 2 views
1

우리는 WSP 파일로 배포되는 SharePoint 타이머 작업을 가지고 있습니다. 이 작업은 SharePoint 기능으로 설치되며 dll은 GAC에 배치됩니다. 다른 모든 SharePoint 사용자 지정은 GAC가 아닌 SharePoint 사이트의 bin 폴더에있는 다른 WSP 파일을 통해 배포됩니다.추가 참조없이 Sharepoint Time Job 배포 GAC

SharePoint 타이머 작업은 Windows SharePoint Services 타이머 (OWSTIMER.EXE) 서비스에 의해 실행되며 http 또는 SharePoint 컨텍스트가 없습니다.

작업에 외부 참조가있는 경우 참조 된 모든 dll도 GAC에 두어야합니다. 그러나, 우리는 서버 정책이 작업 DLL 옆에 아무것도의 GAC 배포을 허용하지 않기 때문에 ...

그것을 할 그럼, 우리 팀 수동으로 복사 참조 할 것 코드를 붙여 넣을 수 없습니다 작업 프로젝트에 넣고 거대한 고유 dll을 구축하십시오. 이러한 복제 프로세스는 때로는 코드가 작업 내부에서 비 동기화되기 때문에 모든 종류의 문제를 일으켰습니다. 그럼에도 불구하고 복제는 결코 할 수없는 아름다운 일이며, 우리는 그로 인해 죽을 때 우리가 지옥에 곧바로가는 것을 알고 있습니다.

참조를 gac에 배치하지 않고 작업을 배포 할 수 있습니까? 또는 고유 dll 안에 참조 된 dll을 병합 할 수 있습니까? 다른 모든 것이 실패하면 컴파일 된 시간에 참조 된 코드가 복사되도록 프로젝트를 빌드 할 수 있습니까?

고맙습니다.

답변

-1

참조 된 dll을 bin 디렉토리에 저장할 수없는 이유는 무엇입니까? 분명히있을 수 있습니다.

+2

작업은 SharePoint 사이트가 아니라 Windows SharePoint Services 타이머에 의해 시작됩니다. 따라서 GAC에 작업을 배포해야합니다. –

3

실제 문제는 서버 관리자가 작업 DLL 이외의 항목에 대해 GAC 배포를 금지한다는 것입니다. 그 의미를 고려하지 않은 정책과 같은 것은 없습니다.)

이 대역 보조는 ILMerge입니다.

ILMerge

은 단일 조립체에 복수의 .NET 어셈블리를 병합 사용될 수있는 유틸리티이다. ILMerge는 입력 어셈블리 중 세트를 가져와 을 하나의 대상 어셈블리로 병합합니다.

이렇게하면 배포를 위해 작업 어셈블리와 모든 종속 어셈블리를 하나의 슈퍼 작업 어셈블리로 병합 할 수 있습니다. 코드를 수동으로 복사하여 붙여 넣는 것보다 훨씬 낫습니다. 또한 포스트 빌드 단계에서이 작업을 수행 할 수 있으므로 빌드 프로세스에 모두 포함됩니다.

+2

잘 의미있는 정책이 얼마나 끔찍한 코드가 될 수 있는지 놀라지 않을 수 없다. – Basic

+0

Hehe - 그 정신의 정신이 완전히 짓밟 았을지라도 그 정책의 편지는 몇 번이나지지 받았다. – Ryan

+0

감사합니다. ILMerge를 사용해 보겠습니다.하지만 확실히 좋은 해결책이 될 것입니다. 클라이언트의 배포 정책은 혼란 스럽습니다. 우리는 그것 때문에 많은 것을 할 수 없습니다. 마치 셰어 포인트만으로는 요구 사항이 아니라 ... –