Visual C#에서 전역 어셈블리 캐시에 어셈블리를 설치하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 815808 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 어셈블리에 대해 강력한 이름을 생성하고 전역 어셈블리 캐시(GAC)에 DLL 파일을 설치하는 방법을 설명합니다. GAC를 사용하면 여러 응용 프로그램에서 어셈블리를 공유할 수 있습니다. GAC는 .NET 런타임과 함께 자동으로 설치됩니다. 구성 요소는 대개 C:\WINNT\Assembly에 저장됩니다.

GAC에 어셈블리를 설치하려면 어셈블리에 강력한 이름을 부여해야 합니다. 이름은 암호화 해시 키 또는 서명에 해당합니다. 강력한 이름은 올바른 구성 요소 버전 관리를 보장합니다. 이렇게 하면 동일한 이름을 가진 구성 요소들이 서로 충돌하거나 소모성이 높은 응용 프로그램에서 잘못 사용되는 것을 방지하는 데 도움이 됩니다.


요구 사항

다음은 권장되는 하드웨어, 소프트웨어 및 네트워크 인프라와 필요한 서비스 팩의 목록입니다.
  • 공유 어셈블리가 설치될 컴퓨터에 대한 관리자 권한

이 문서에서는 사용자가 다음 내용을 잘 알고 있는 것으로 가정합니다.
  • .NET 또는 Visual Studio 2005의 어셈블리에 대한 일반 지식
  • 명령 프롬프트에서 도구를 사용하는 방법에 대한 일반 지식

전역 어셈블리 캐시

Visual Studio .NET 또는 Visual Studio 2005를 사용하여 소규모 클래스 라이브러리 프로젝트를 만들고, 강력한 이름을 생성하고, 프로젝트의 .dll 파일을 GAC에 설치하려면 다음과 같이 하십시오.
  1. Visual Studio .NET 또는 Visual Studio 2005에서 Visual C# 클래스 라이브러리 프로젝트를 새로 만들고 프로젝트의 이름을 GACDemo로 지정합니다.
  2. 강력한 이름을 사용해야 합니다. 이 암호화 키 쌍을 만들려면 SN 도구를 사용합니다. 이 도구는 .NET Framework SDK(Solution Developer Kit)가 설치된 \bin 하위 디렉터리에 있습니다. SN 도구는 사용하기가 쉽습니다. 명령줄 명령문의 형식은 아래와 같습니다.
    form:sn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"
  3. 키를 쉽게 찾고 명령 프롬프트에서 키에 쉽게 액세스할 수 있도록 C:\에 GACKey 디렉터리를 만듭니다.

    참고?대부분의 경우 .NET 도구는 C:\Program Files\Microsoft.NET\FrameworkSDK\Bin에 있습니다. 다음 SN 명령을 입력하기 전에 이와 유사한 컴퓨터의 경로를 .NET bin 디렉터리에 복사할 수도 있습니다. 명령 프롬프트에 cd를 입력하고, 경로를 마우스 오른쪽 단추로 눌러 붙여 넣은 다음 Enter 키를 눌러 SN 도구가 있는 디렉터리를 변경합니다.

    다음과 같이 입력합니다.
    sn -k "C:\GACKey\GACkey.snk"
  4. 키가 생성되지만 아직 프로젝트의 어셈블리와 연결되어 있지 않습니다. 연결하려면 Visual Studio .NET 솔루션 탐색기에서 AssemblyInfo.cs 파일을 두 번 누릅니다. 이 파일에는 Visual Studio .NET에서 프로젝트를 만들 때 기본적으로 포함되는 어셈블리 특성 목록이 있습니다. 다음과 같이 코드에서 AssemblyKeyFile 어셈블리 특성을 수정합니다.
    [assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
    Ctrl+Shift+B를 눌러 프로젝트를 컴파일합니다. GAC에 .dll 파일을 설치하는 데 추가 코드는 필요하지 않습니다.
  5. Gacutil 도구를 사용하거나 .dll 파일을 적절한 디렉터리로 끌어 .dll 파일을 설치할 수 있습니다. Gacutil 도구를 사용하는 경우에는 아래의 명령을 사용할 수 있습니다.
    gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"
    파일을 끌려면 Microsoft Windows 탐색기를 사용합니다. Windows 탐색기를 두 개 엽니다. 한 탐색기에서 해당 콘솔 프로젝트에 대한 .dll 파일 출력 위치를 찾습니다. 다른 탐색기에서는 c:\[SystemRoot]\Assembly를 찾습니다.

    .dll 파일을 Assembly 폴더로 끕니다.

전체 코드 예제(AssemblyInfo.cs)

using System.Reflection;
using System.Runtime.CompilerServices;

//
// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// that is associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

//
// Version information for an assembly is made up of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values, or you can default the revision and build numbers 
// by using the '*' as shown below:

[assembly: AssemblyVersion("1.0.*")]

//
// To sign your assembly you must specify a key to use. See the 
// Microsoft .NET Framework documentation for more information about assembly signing.
//
// Use the following attributes to control that key is used for signing. 
//
// Notes: 
//   (*) If no key is specified, the assembly is not signed.
//   (*) KeyName refers to a key that has been installed in the Crypto Service
//       Provider (CSP) on your computer. KeyFile refers to a file that contains
//       a key.
//   (*) If the KeyFile and the KeyName values are both specified, the 
//       following processing occurs:
//       (1) If the KeyName can be found in the CSP, that key is used.
//       (2) If the KeyName does not exist and the KeyFile does exist, the key 
//           in the KeyFile is installed to the CSP and used.
//   (*) To create a KeyFile, you can use the sn.exe (Strong Name) utility.
//       When specifying the KeyFile, the location of the KeyFile must be
//       relative to the project output directory which is
//       %Project Directory%\obj\<configuration>. For example, if your KeyFile is
//       located in the project directory, you would specify the AssemblyKeyFile 
//       attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
//   (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
//       documentation for more information about this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
[assembly: AssemblyKeyName("")]

확인

  1. Windows 탐색기를 시작합니다.
  2. C:\SystemRoot\ assembly를 찾습니다.
  3. 설치되어 있는 .dll 파일 목록에서 GACDemo를 봅니다.

참조

자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
전역 어셈블리 캐시에 어셈블리 설치
http://msdn2.microsoft.com/en-us/library/dkkx7f79(vs.71).aspx(영문)
전역 어셈블리 캐시
http://msdn2.microsoft.com/en-us/library/yf1d93sz(vs.71).aspx(영문)
전역 어셈블리 캐시 도구
http://msdn2.microsoft.com/en-us/library/ex0ss12c(vs.71).aspx(영문)




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 815808 - 마지막 검토: 2007년 5월 13일 일요일 - 수정: 3.7
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
키워드:?
kbcodesign kbcommandline kbnamespace kbhowtomaster KB815808

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com