Share via


VSPackage의 리소스

네이티브 위성 UI DLL, 관리되는 위성 DLL 또는 관리되는 VSPackage 자체에 지역화된 리소스를 포함할 수 있습니다.

일부 리소스는 VSPackage에 포함할 수 없습니다. 다음과 같은 관리되는 리소스를 포함할 수 있습니다.

  • 문자열

  • 패키지 로드 키(문자열이기도 함)

  • 도구 창 아이콘

  • 컴파일된 CTO(명령 테이블 출력) 파일

  • CTO 비트맵

  • 명령줄 도움말

  • 정보 대화 상자 데이터

관리되는 패키지의 리소스는 리소스 ID로 선택됩니다. CTO 파일은 예외입니다. 이 파일의 이름은 CTMENU여야 합니다. CTO 파일은 리소스 테이블에 byte[]로 표시되어야 합니다. 다른 모든 리소스 항목은 종류별로 식별됩니다.

PackageRegistrationAttribute 특성을 사용하여 Visual Studio에 관리되는 리소스를 사용할 수 있음을 나타낼 수 있습니다.

[PackageRegistration(UseManagedResourcesOnly = true)]
public sealed class MyPackage : Package

이러한 방식으로 PackageRegistrationAttribute를 설정하면 Visual Studio가 리소스를 검색할 때 관리되지 않는 위성 DLL을 무시해야 합니다(예: LoadPackageString을 사용). Visual Studio는 리소스 ID가 동일한 두 개 이상의 리소스를 발견하면 첫 번째 리소스를 사용합니다.

예시

다음 예제는 도구 창 아이콘의 관리되는 표현입니다.

<data name="1001"
     type="System.Resources.ResXFileRef,System.Windows.Forms">
     <value>
     MyToolWinIcon.bmp;
     System.Drawing.Bitmap,
     System.Drawing,
     Version=1.0.0.0,
     Culture=neutral,
     PublicKeyToken=b03f5f7f11d50a3a
     </value>
</data>

다음 예제에서는 CTO 바이트 배열을 포함하는 방법을 보여 줍니다. 이 배열의 이름은 CTMENU여야 합니다.

<data name="CTMENU"
     type="System.Resources.ResXFileRef,System.Windows.Forms">
     <value>
     MyPackage.cto;
     System.Byte[],
     mscorlib,
     Version=1.0.0.0,
     Culture=neutral,
     PublicKeyToken=b03f5f7f11d50a3a
     </value>
</data>

구현 참고 사항

Visual Studio는 가능하면 VSPackage 로드를 지연합니다. VSPackage에 CTO 파일을 포함하면 Visual Studio가 설치 시, 즉 병합된 명령 테이블을 빌드할 때 이러한 VSPackage를 모두 메모리에 로드해야 합니다. VSPackage에서 코드를 실행하지 않고 메타데이터를 검사하여 VSPackage에서 리소스를 추출할 수 있습니다. VSPackage는 현재 초기화되지 않으므로 성능 손실이 최소화됩니다.

Visual Studio가 설치 후 VSPackage에서 리소스를 요청하면 해당 패키지가 이미 로드 및 초기화되어 성능 손실이 최소화될 수 있습니다.