본문 바로가기

Microsoft/C# & ASP.NET

C# 전역 어셈블리 캐시(전역 어셈블리 설정하기)


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


위의 원본 문을 참고 하고 

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]