Blog Content

    티스토리 뷰

    90.C# - 전역어셈블리캐시 ( Assembly )

    반응형

    어셈블리는 전용과 공유 두가지로 분리됩니다.
    전용 : 자신만이 사용하는 어셈블리어, DLL파일이 프로젝트에 복사됨
    공유 : 여러 사람들이 사용 가능한 어셈블리어로 C:\Windows\assembly
            폴더에 DLL파일을
    추가 하여 사용 , 참조만 하고 복사되지 않음
            전역(공유)어셈블리캐시 예제입니다.


    Watch.DLL 만들기

    1. 새프로젝트 - 빈 솔루션 생성 후
    2. 빈 솔루션 - 추가 - 새프로젝트 - C# - Windows - 클래스 라이브러리 추가
        (이름 : Watch)
    3. 추가한 Watch에서 'program.cs' 파일을 삭제 후 Watch에서 클래스 추가
        (이름 : Clock)

    Clock.cs
    namespace Watch
    {
        public class Clock
        {
            public static string NowTime()
            {
                return DateTime.Now.ToShortDateString();
            }
        }
    }
    코드 작성후 솔루션 빌드를 하여 Watch.DLL 파일을 생성합니다.

    생성한 Watch.DLL 파일을 전역어셈블리어로 사용하기 위해서
    C:\WINDOWS\assembly에 Watch.DLL 파일을 복사 붙여넣기를 합니다.
    [그림28-1]
    붙여넣기 하면 "어셈블리 'Watch.dll'에 강력한 이름이 필요합니다."라는
    경고 메세지가 나타납니다.
    이러한 메세지가 나타나야 정상이라고 보시면 됩니다.
    이 문제를 해결하기 위해서는 이보다 강력한 키값을 주면 됩니다.


    [그림28-2]
    시작 - 모든프로그램 - Microsoft Visual Studio 2008 -
            Visual Studio Tools-Visual Studio 2008 명령 프롬프트 실행

    명령프롬프트에서 snk파일을 생성합니다.
    [그림28-3]        snk파일을 만들 경로 이동 후
            sn.exe -k Watch.snk를 입력 후 결과 확인

    다시 Visual Studio 작업 화면으로 넘어갑니다.
    솔루션탐색기에서 생성한 클래스 라이브러리의 속성페이지로 이동합니다.
    속성페이지 - 성명탭에서 - 어셈블리 성명 채크 후 "강력한 이름 키 파일 선택"
    클릭 후
    위에서 명령프롬프트에서 생성한 Watch.snk를 지정 후
    속성페이지를 닫고 솔루션탐색기에
    Watch.snk가 추가 되었는지 확인 합니다.
    [그림28-4]Watch클래스 라이브러리 "다시 빌드"

    빌드 한 후 해당 프로젝트의 폴더에서 Debug 폴더로 이동하여
    Watch.DLL 파일을
    다시 한 번 C:\Windows\assembly폴더 복사(이동)
    [그림28-5]오류 없이 복사가 된것을 확인 합니다.

            전역어셈블리로 추가한 Watch.DLL 파일을 이용한 간단한 예제 입니다.
    1. 프로젝트에서 "C# - 콘솔응용프로그램"을 추가합니다.(UseWatch)
    2. 추가한 콘솔응용프로그램에서 참조페이지를 열고 Watch를 추가합니다.
    3. 코드 작성 후 UseClock프로젝트를 시작페이지로 설정 후 빌드 후 결과확인
    [그림28-6][그림28-7]

    Programe.cs
    namespace UseWatch
    {
        public class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(Watch.Clock.NowTime());
            }
        }
    }

    결과확인

    [그림28-8]

    보통 해당 프로젝트에 참조파일을 추가 하게 되면 빌드(실행)시 "Debug폴더"에
    참조파일이 추가되는것을 확인 할 수 있는데 전역(공통) 어셈블리를 통해서
    참조파일이
    추가 되지 않았음을 확인 할 수 있습니다.
    [그림28-9]
    90Assembly.zip
    반응형

    Comments