.Net 컴포넌트를 Register Assembly(RegAsm)을 사용해 레지스터리에 등록하는데
이것은 .Net 컴포넌트를 COM형태로 만드는것이 아니라 
COM처럼 보이도록 하는것이구요 
표준 Windows클라이언트들은  컴포넌트 클래스를 런타임시에 바인드합니다.

예를들어 설명하겠습니다.

=========================================================================
아래와 같은 닷넷 클래스가 있습니다.

using System;

namespace TestClass
{
    
    public class TestClass
    {
        public TestClass()
        {
            
        }
        public string Hello(string name)
        {
            return "Hello "+name;
        }
    }
}

==================================================================
이를 등록하려면 command창에서 
c:>regasm  TestClass.dll 

====================================================================
그런후에 기존에 com처럼 사용하시면 됩니다.
vb 스크립트로 간단하게 작성하면

Option Explicit

Dim objTestClass 
Dim InputValue
Dim Result 


Set objTestClass = CreateObject (" TestClass.TestClass")
InputValue=" 장성호 "
Result = objTestClass.Hello(CLng(InputValue))
Call MsgBox(Result )

뭐 위와 같은 식으로 하면 될껍니다.

참 그런데 한가지 문제가 있습니다.
===============================================================================
이것을 사용하기 위해서 한가지 해야하는것이 있습니다.
그것은 .Net 어셈블리 컴포넌트를 COM에서 호출하려면 COM서비스가 .NET 어셈블리 컴포넌트의 위치를 
찾을수 있어야 합니다.

그러려면 전역 어셈블리로 등록하던지 아니면 클라이언트 작업폴더에 가져다 놓던지 해야합니다.
================================================================================
그럼 닷넷 어셈블리를 전역어셈블리로 등록하는 법을 말씀드리겠습니다.

그것은 StrongName 강력한이름이 있어야 합니다.
그것을 만드는 방법은 
C : > sn   -k   Test.snk
=================================================================================
그런다음 이파일을 닷넷 프로젝트 Bin \ Debug 폴더에 가져다 놓고
AssemblyInfo.cs파일에서 KeyFile을 적어줘야 합니다.

[assembly: AssemblyKeyFile( " Test.snk") ]
=================================================================================
그런후 컴파일하고 
=================================================================================
컴파일된 dll파일( 여기서는 TestClass.dll 이 되겠군요) 을 공유 어셈블리가 있는 폴더로 옮겨 놓으면 됩니다.

공유어셈블폴더는 WINNT\ Microsoft.NET\Framework\v1.0.3705        // 맞는가 모르것네...쩝쩝

그냥 복사해서 옮기는 방법말고
gacutil이라는 툴이 있습니다.


cmd창에서 어셈블이 폴더(C:\WINNT\ Microsoft.NET\Framework\)로가서

gacutil / i  TestClass.dll  
이러면 dll이 전역 캐시에 설치가 됩니다.

===================================================================================
TlbExp.exe

이것은 닷넷어셈블리파일을 COM 형식 라이브러리( * .tbl )를 만들어 줍니다.
그러면 VB 6.0같은 .NET환경에 기반을 두지 않은 개발 언어들도 이 형식 라이브러리 파일을 이용하여
 .NET 컴포넌트에 대한 런타임시 바인딩을 수행하여 참조할수 있습니다/

 c : > TlbExp  TestClass.dll

=====================================================================================
위의 두과정을 한번에 하려면 

c : > regasm  TestClass.dll    / tlb: TestClass.tlb

 / tlb  플래그를 사용하시면 됩니다.

 
Posted by ... XJAPAN

댓글을 달아 주세요