2010-12-23 6 views
1

이미지 편집기 사용자 정의 컨트롤 (C# .net v2.0)이 있습니다. 수천 대의 컴퓨터에서 액티브 X 구성 요소로 사용됩니다. 구성 요소를 Windows 양식 및 다른 용도로 사용할 수도 있습니다.일반 사용 라이브러리를 만드는 방법

activex 용으로 iHTML 코드에 <object> 태그를 추가하고 clsid (정적 GUID)로 구성 요소를 호출하십시오. 그래서 만약 내가 빌드하고 새로운 버전을 배포하는 클라이언트 코드를 변경하지 않고 작동합니다.

Windows 양식에서 동일한 분산 라이브러리를 사용할 수있게하고 싶습니다. 그리고 그들은 그것을 사용하는 프로그램을 변경하지 않고 구성 요소를 업데이트 할 수 있도록 특정 버전을 참조해서는 안됩니다.

나는 regasm을 사용하여 com에 등록합니다. 하지만 난 (참조 CLSID와 같은 참조) Visual Studio에서 참조하는 방법을 모르겠다.

내가 참조를 선택하고 COM 탭을 선택하면 목록에 내 구성 요소를 볼 수 있습니다 시각 stuido 수 있습니다.

참고 : 나는이 선을 사용하여 글로벌 캐시에 assemly을 추가하려고하지만 밖으로 또는 작동하지 않았다 아무것도가 변경된 경우 :

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\tlbexp" ImageEditorComp.dll /out:ImageEditorComp.tlb 
regasm /tlb:ImageEditorComp.tlb ImageEditorComp.dll 
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\gacutil" /I ImageEditorComp.dll 

어떤 제안이 감사

감사 이해 coulnt

답변

0

나는 해결책을 찾아 냈다. (,, COM에 대한 사용 인터페이스를 어셈블리에 서명 보이는 조립 COM 만들기)

1- COM에 대한 모든 필요한 속성을 사용하여 구성 요소를 작성 클라이언트 시스템

을 :.

은 단계적으로 설명하기

2 regasm을 사용하여 어셈블리를 등록하십시오 (안전 플래그 추가를 권장합니다). 당신은 그것의 GAC에 설치 그래서 만약 처음에 검색되는 어셈블리 GAC의 특정 버전을 호출 할 때

3, 내가 알아 낸

(또는 MSI 설치) gacutil을 사용하여 글로벌 캐시에 어셈블리를 추가 참조 된 코드베이스 경로는 사용되지 않습니다.

activeX로 사용하는 경우 GUID로 구성 요소를 지정합니다.regasm은 어셈블리 이름과 GUID가 나타내는 버전을 추가하기 때문에 웹 브라우저는 GAC의 구성 요소를 직접 사용합니다.

데스크톱 응용 프로그램에서 사용하는 경우 assebmly를 직접 참조하고 copylocal 속성을 false로 설정하십시오. 마찬가지로 클라이언트 컴퓨터 창에서 GAC 자체에있는 어셈블리를 찾습니다.

다음은 주제에 대한 유용한 링크입니다.

http://www.simple-talk.com/dotnet/visual-studio/build-and-deploy-a-.net-com-assembly/

은 다른 사람의 시간을 대답 그 해결책을 알아 내 저장 시간 :

2

이것은 불가능합니다. 악명 높고 두려운 DLL Hell 문제가 발생합니다. COM에서 돌리려는 냉담한 규칙은 공개적으로 표시되는 인터페이스 나 구현에서 중요한 변경 사항을 만들 때 이 있으면 공개 인터페이스의 [Guid] 특성 값을 변경할 수 있다는 것입니다. GUID를 변경하면 Regasm.exe를 사용할 때 구성 요소의 이전 버전의 레지스트리 키를 덮어 쓰지 않습니다. 구성 요소를 사용하고 최신 버전을 사용하도록 다시 컴파일되지 않은 기존 프로그램은 문제없이 계속 실행됩니다. DLL Hell의 전형적인 결과는 AccessViolation과 같은 까다로운 하드웨어 예외이며, 매우 문제를 해결하기가 어렵습니다.

여기의 특정 사례에는 해당 사항이 없습니다. COM을 통해 구성 요소를 사용하려고 시도 할 필요는 없습니다. 그것은. NET 어셈블리입니다, 그냥 직접 그것에 대한 참조를 추가합니다. IDE는 실제로 interop 라이브러리에 대한 참조를 추가하는 것을 중지합니다. 하지만 .tlb가 아닙니다. GAC는 [AssemblyVersion]을 적절히 늘리면 DLL 지옥을 빠져 나옵니다.

+0

감사를 저장 바랍니다. – honibis

관련 문제