2009-12-14 6 views
4

우리는 동일한 .net dll (코드 + 레거시)을 사용하는 3 개의 소프트웨어 제품을 보유하고 있습니다.
이러한 모든 기능은 3/4 dll에 공통으로 사용됩니다..Net 어셈블리/dll 공유 및 배포

이 dll을 배포하는 방법과 위치를 알고 싶었습니다.
그리고 이것이 가장 표준적인 방법입니다.

S1] 설치하는 각 제품과 함께 - 아마도 가장 쉬운 방법입니다. (하지만 공유 dll에서 업데이트가 발생하는 경우 3 개의 dll 모두 완료해야합니다.)

S2] 공용 파일 폴더에 넣으시겠습니까?

S3] System GAC가이 기능을 지원합니까?
는 (3 GAC에 넣고 코드 버전에 대해 걱정 shared.but 메신저입니까?)

을 또한 프로젝트에 대한 배포 설정을 작성하는 방법 :

D1] 하나 setup.each의 모든 DLL을 팩을 설치 프로그램에는 자체 복사본이 있습니다.
누군가가 소프트웨어 A를 설치하고 소프트웨어 B에 대해 공유 파일이 이미 시스템에 존재한다고 가정하십시오.

D2] 공용 설정 파일을 별도의 설정으로 배포하고 각 설정 파일을 압축하여 파일이 이미 존재하는지 여부를 확인하십시오. (여전히 설정 크기가 도움이되지 않습니다)
공용 폴더 - GAC 또는 일부 여야합니다. 시스템의 폴더? 다른 공유 파일의 버전 확인이 필요하므로 복잡한 설정이 필요합니다.

또한 최신 버전의 소프트웨어가 출시되고 이전 버전과 공존해야한다고 가정 해보십시오 ..
여러 버전에서 호환성을 유지하는 방법은 무엇입니까?

+0

현재 버그 수정 및 버전 문제가 거의 발생하지 않습니다. 현재 공용 파일에 GAC를 사용하고 있으며 각 제품의 모든 DLL을 GAC에 패키징하는 것은 골치 거리입니다. – Amitd

답변

0

"S1"+ "D1"또는 "S1"+ ClickOnce; 간단한 배포 및 버전 관리를 수행하며 ClickOnce 배포, xcopy 배포, MSI 배포, 웹 등과 호환됩니다. GAC는 적절한 IMO가 아닙니다. 다시 업데이트; 음, 개별적으로 테스트/릴리스하고 싶습니다. 나는 계단식 빌드를 내 빌드 서버에 구성 했으므로 라이브러리 DLL을 업데이트하면 해당 DLL을 사용하는 모든 것을 다시 빌드하고 위쪽으로 (누군가가 말하기 전에주기를 감지하고 제거함) 빌드합니다.

"공용 폴더"접근 방식은 dll 해상도에 문제가 있으므로 실제 PITA입니다.

GAC 접근 방식은 효과가 있지만 많은 불필요한 노력이 필요하며 중복 된 DLL 몇 개를 저장하는 데 상당히 어려움이 있습니다. 관리자가 아닌 사용자에게 배포해야하는 경우에도 문제가됩니다.

0

모든 것을 응용 프로그램 폴더에 넣으십시오. 공유 할 코드가 많고 항상 업데이트되지 않는 경우에만 GAC에 넣습니다.

+0

어떤 응용 프로그램 폴더입니까? 여기에 문제는 그가 모두 동일한 DLL을 사용하는 3 개의 응용 프로그램을 가지고 있습니다 .... – cjk

0

GAC는 코드에서 각 버전의 복사본이 하나만 있도록하려는 곳입니다. 여러 버전의 라이브러리 저장을 처리하기 때문에 GAC의 버전 관리에 대해 걱정하지 마십시오.

그러나 일반적으로 라이브러리를 많이 사용하지 않는 한 Ngu의 답변에 동의하고 응용 프로그램 폴더에 넣는 경향이 있습니다. 이렇게하면 배포 작업을 훨씬 쉽게 처리 할 수 ​​있습니다.

2

+ 확실히. "if any updates ..."에 관해서 : 이것은 문제가 아니라 이익입니다. 어셈블리를 변경하면 사용중인 프로젝트를 다시 빌드해야합니다. S1 시나리오를 사용하면 프로젝트별로 프로젝트를 수행 할 수 있으며 불필요한 종속성은 없습니다.

작은 라이브러리에 GAC를 사용하지 마십시오. 번거롭습니다.

+0

라이브러리 중 하나가 상당히 크고 .. 모든 라이센스 등이 있습니다. 그러나 문제는 라이선스 조건이 자주 변경되어 유지됩니다. 3 제품. – Amitd

1

릴리스가 잘 계획되어 있으면 GAC에 DLL을 넣는 것이 좋습니다. 이 사실에 모순되는 점이 있다면, 작은 기능을 추가하고 제품을 출시한다면 GAC는 모든 제품을 병렬 릴리스해야하기 때문에 확장이 불가능합니다. 또한 GAC는 이러한 dll을 사용하는 모든 제품에 공통 기능을 갖는 dll을 저장하는 데 사용됩니다. 따라서 모든 제품에 대해 제공하는 기능에 대해 확신해야합니다. 모든 제품에 다른 기능을 추가하고 GAC에 dll을 저장하는 것은 전혀 권장되지 않습니다. 이를 위해 당신은 당신의 버전 시스템과 릴리스에 대해 매우 정확하게해야합니다.